2013-02-22 19 views
5

एंड्रॉइड में, जब हम गैलरी से स्क्रीनशॉट खोलते हैं। यह 2 सेकंड के लिए धुंधला हो जाता है और फिर ऑटो स्वयं को समायोजित करता है।छवि स्वत: समायोजन नहीं कर रही है

लेकिन जब मैं छवि पथ का उपयोग कर के रूप में एक imageView पर स्थापित करने के लिए इस स्क्रीनशॉट छवि का उपयोग कर रहा हूँ:,

छवि पथ है: /mnt/sdcard/ScreenCapture/SC20130219-124221.png

private void showImage(String imgPath) { 
     // TODO Auto-generated method stub 

     System.out.println("Image Path is: "+imgPath); 

     ImageView openImage=(ImageView)findViewById(R.id.img_fullScreen); 
     ExifInterface exifMedia = null; 
     try { 
      exifMedia = new ExifInterface(imgPath); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     String exifOrint = exifMedia.getAttribute(ExifInterface.TAG_ORIENTATION); 
     int exifOrientation = Integer.parseInt(exifOrint); 
     System.out.println("Orientation Tag is:"+exifOrientation); 
     BitmapFactory.Options mOptions=new BitmapFactory.Options(); 
     mOptions.inSampleSize=2; 
     Bitmap imgBitmap = BitmapFactory.decodeFile(imgPath,mOptions); 
     //Runtime.getRuntime().gc(); 

     imgBitmap = getResizedBitmapImage(imgBitmap, 200, 200, exifOrientation); 
     openImage.setImageBitmap(imgBitmap); 
    } 

एक और मामला: यूआरएल से बिटमैप प्राप्त करने के रूप में:

URL url = new URL(urlTarget); 
      BitmapFactory.Options mOptions = new BitmapFactory.Options(); 
      mOptions.inSampleSize=1; 
      Bitmap bmp = BitmapFactory.decodeStream(url 
        .openConnection().getInputStream(),null,mOptions); 

तब छवि स्वत: समायोजित नहीं होती है। यह ब्लूरेड आता है। यह मेरी समस्या है।

यह केवल स्क्रीनशॉट के मामले में है।

धन्यवाद

+0

आप पेस्ट कर सके getResizedBitmapImage() विधि का समाधान हो जाएगा? –

+0

यह एक स्क्रीनशॉट है इसलिए 'mOptions.inSampleSize = 1; 'का उपयोग करें। अन्यथा, यह निश्चित रूप से धुंधला हो जाएगा –

+0

हैलो @ शेरिफेलखतिब ने उपर्युक्त मामले में मेरी मदद की है लेकिन यूआरएल से बिटमैप प्राप्त करने के मामले में, यह काम नहीं कर रहा है। यूआरएल से बिटमैप प्राप्त करने के मामले में कृपया मुझे बताएं कि नमूना आकार में कैसे उपयोग करें। मैंने अपना कोड संपादित किया है। कृपया –

उत्तर

0

यह सिर्फ एंड्रॉयड गैलरी ऐप की एक मुश्किल व्यवहार है (और यह भी एक अच्छा उदाहरण है कि कैसे बेहतर प्रयोक्ता अनुभव बनाने के लिए आप बड़े छवियों को लोड करने के लिए है, तो पता चलता है)।
सबसे पहले, जब आप गैलरी में छवि थंबनेल पर क्लिक करते हैं, तो यह छवि दृश्य में प्रदर्शित करने के लिए बिल्कुल उस थंबनेल का उपयोग करेगा। चूंकि थंबनेल छोटा है और इसे ImageView को ठीक करने के लिए स्केल अप करने की आवश्यकता है, तो आप इसे धुंधला देखेंगे।
उपयोगकर्ता को थंबनेल प्रदर्शित करते समय, यह मूल छवि को डीकोड भी करता है। जब सब कुछ हो जाता है, तो मूल छवि थंबनेल के बजाय प्रदर्शित की जाएगी। जब थंबनेल और मूल छवि के बीच स्विच
गैलरी भी एनीमेशन का उपयोग (डिफ़ॉल्ट लेआउट एनीमेशन आप एपीआई प्रदर्शन में पा सकते हैं)

1

mOptions.inSampleSize=2; इस वैकल्पिक पिक्सेल डेटा छोड़ सकते हैं और एक छवि 1/2 मूल लोड करने के लिए जा रहा है आकार। ऑफ-कोर्स यह धुंधला और अत्यधिक अलियाड दिखता है, क्योंकि यह image scaling एल्गोरिदम के पास कहीं भी नहीं है।

जहां तक ​​गैलरी ऐप का संबंध है, यह प्रगतिशील रूप से लोड होता है, यह थंबनेल दिखाता है, या त्वरित प्रस्तुत करता है, जबकि पूर्ण रिज़ॉल्यूशन छवि को स्मृति में लोड किया जा रहा है।

0

mOptions.inSampleSize =1 को mOptions.inSampleSize = 2 से अपने कोड बदल सकते हैं और आपकी समस्या को निश्चित रूप से

+0

बिल्कुल सही –

+0

@ बोर्नटोविन ओह्हह यह महान है .... –