2012-07-20 2 views
1

J'utilise https://github.com/thest1/LazyList pour la mise en cache d'image. Je dois diaplayer l'image en plein écran. mais il y a une grande perte de qualité d'image. quel code je dois changer pour obtenir l'image.thanks originale à l'avance.Android: Image réduite en utilisant ImageLoader

+0

Pouvez-vous me dire pourquoi utilisez-vous LazyList lorsque vous devez afficher une image en plein écran? – AB1209

+0

@ AB1209 Pourquoi ne pas utiliser LazyLoading pour ce cas. L'utilisateur peut ne pas vouloir que le thread UI soit pendu. C'est vraiment bon à utiliser .. –

+0

@ AB1209 J'ai beaucoup d'images à télécharger sur le Web et les afficher dans la galerie-View. – Roshni

Répondre

5

Rechercher cette méthode dans la classe ImageLoader,

private Bitmap decodeFile(File f){ 
    try { 
     //decode image size 
     BitmapFactory.Options o = new BitmapFactory.Options(); 
     o.inJustDecodeBounds = true; 
     BitmapFactory.decodeStream(new FileInputStream(f),null,o); 

     //Find the correct scale value. It should be the power of 2. 
     final int REQUIRED_SIZE=70; 
     int width_tmp=o.outWidth, height_tmp=o.outHeight; 
     int scale=1; 

      while(true){ 
       if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE) 
        break; 
       width_tmp/=2; 
       height_tmp/=2; 
       scale*=2; 
      } 
     //decode with inSampleSize 
     BitmapFactory.Options o2 = new BitmapFactory.Options(); 
     o2.inSampleSize=scale; 
     return BitmapFactory.decodeStream(new FileInputStream(f), null, o2); 
    } catch (FileNotFoundException e) {} 
    return null; 
} 

et supprimer les lignes ci-dessous à partir de cette méthode,

while(true){ 
       if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE) 
        break; 
       width_tmp/=2; 
       height_tmp/=2; 
       scale*=2; 
      } 

Cela fera en sorte que votre image ne soit pas mise à l'échelle du tout .

Mais vous devez garder à l'esprit que, votre application est vulnérable à OOM si vous faites cela.

+1

oui je suis d'accord avec Andro Selva que dans certains cas, vous obtiendrez une exception de mémoire en supprimant ce bloc de code – Anand

0

Dans votre ImageLoader.java la fonction

//decodes image and scales it to reduce memory consumption 
    private Bitmap decodeFile(File f) 

est utilisé à l'échelle/redimensionner ur image.

final int REQUIRED_SIZE=70; 

augmentez ceci pour augmenter la qualité de l'image. Faites-en 200 ou quelque chose et essayez.

Questions connexes