2013-02-22 19 views
5

In android, quando apriamo uno screenshot dalla galleria. Viene sfocato per 2 secondi e poi si auto regola automaticamente.L'immagine non si regola automaticamente

Ma quando io sto usando questa immagine screenshot per impostare su un imageview mezzo del percorso di immagine come:,

immagine Path è: /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); 
    } 

Un altro caso: mentre si ottiene Bitmap dall'URL come:

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

Quindi l'immagine non viene regolata automaticamente. Viene SPURATO. QUESTO È IL MIO PROBLEMA.

È SOLO NEL CASO DI SCREENSHOT.

grazie

+0

Potrebbe incollare il metodo getResizedBitmapImage()? –

+0

È uno screenshot quindi usa 'mOptions.inSampleSize = 1;'. Altrimenti, diventerà sicuramente sfocata –

+0

Ciao @SherifelKhatib Mi ha aiutato nel caso precedente ma nel caso di ottenere la bitmap dall'URL, non funziona. Puoi dirmi come usare in Sampleampize in caso di ottenere la bitmap dall'URL. Ho modificato il mio codice. Si prega di dare un'occhiata –

risposta

0

Questo è solo un comportamento ingannevole della app Galleria Android (ed è anche un buon esempio mostrano come rendere migliore esperienza utente se si dispone di caricare immagini di grandi dimensioni).
All'inizio, quando si fa clic sulla miniatura dell'immagine nella galleria, verrà utilizzata esattamente la miniatura da visualizzare in ImageView. Poiché la miniatura è piccola e deve essere ingrandita per correggere ImageView, la vedrai sfocata.
Durante la visualizzazione della miniatura per l'utente, decodifica anche l'immagine originale. Quando tutto è fatto, l'immagine originale verrà visualizzata al posto della miniatura.
La galleria inoltre utilizzare l'animazione quando si passa tra la miniatura e l'immagine originale (animazione layout predefinito si può trovare in API Demos)

1

mOptions.inSampleSize=2; Questo sta per spostarsi dati pixel alternati e caricare un'immagine 1/2 dell'originale dimensione. Ovviamente apparirà sfocato e fortemente aliasato, perché non è vicino all'algoritmo image scaling.

Per quanto riguarda l'applicazione Galleria, carica progressivamente, mostra una miniatura o un rendering veloce, mentre l'immagine a piena risoluzione viene caricata in memoria.

0

modificare il codice mOptions.inSampleSize = 2-mOptions.inSampleSize =1 E il vostro problema sarà sicuramente essere risolto

+0

Assolutamente corretto –

+0

@BorntoWin Ohhhh è fantastico .... –

Problemi correlati