2013-02-22 12 views
5

W android, kiedy otwieramy zrzut ekranu z galerii. Rozmywa się przez 2 sekundy, a następnie automatycznie dostosowuje się.Obraz nie jest auto regulacji

Ale kiedy używam tym zrzucie obrazu ustawić na ImageView stosując ścieżkę obrazu jak:,

Path Obraz jest: /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); 
    } 

Inny przypadek: podczas pobierania bitmapy z adresu URL:

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

Następnie obraz nie jest automatycznie dostosowywany. Pojawia się BLURRED. TO JEST MÓJ PROBLEM.

TO W PRZYPADKU SCREENSHOT Only.

Dzięki

+0

mógłbyś wkleić? –

+0

To zrzut ekranu, więc użyj 'mOptions.inSampleSize = 1;'. W przeciwnym razie na pewno się rozmyśli –

+0

Witaj @ SimheelKhatib Pomógł mi w powyższym przypadku, ale w przypadku uzyskania bitmapy z adresu URL, to nie działa. Czy możesz mi powiedzieć, jak używać inSampleSize w przypadku pobierania bitmapy z adresu URL. Zmieniłem mój kod. Proszę spojrzeć na zdjęcie –

Odpowiedz

0

to tylko kłopotliwe zachowanie aplikacji Android galerii (a także jest dobrym przykładem pokazują, jak zrobić lepsze doświadczenie użytkownika, jeśli trzeba załadować duże obrazy).
Początkowo, po kliknięciu na miniaturkę obrazu w galerii, będzie używać dokładnie tę miniaturę, aby wyświetlić w ImageView. Ponieważ miniaturka jest mała i musi być skalowana do góry, aby naprawić ImageView, zobaczysz, że się rozmazuje.
Podczas wyświetlania miniatur dla użytkownika, dekoduje również oryginalny obraz. Gdy wszystko zostanie zrobione, oryginalny obraz zostanie wyświetlony zamiast miniatury.
Galeria używać również animację podczas przełączania między miniaturkę i oryginalnego obrazu (domyślnie animacji układ można go znaleźć w API Demos)

1

mOptions.inSampleSize=2; To będzie pominąć alternatywnych danych pikseli i załadować obraz 1/2 oryginał rozmiar. Of-oczywiście będzie wyglądać niewyraźne i bardzo aliasem, bo to nie ma gdzie blisko dobrego algorytmu image scaling.

miarę Galeria aplikacja jest zaniepokojony, że ładuje się stopniowo, to pokazuje miniatury, lub szybkie renderowanie, przy pełnej rozdzielczości obraz jest ładowany do pamięci.

0

Zmień swój kod z mOptions.inSampleSize = 2 do mOptions.inSampleSize =1 I problem na pewno być rozwiązane metodą getResizedBitmapImage()

+0

Absolutnie poprawne –

+0

@BorntoWin Ohhhh jego wielki .... –