2017-02-23 5 views
0

Salutations !!! J'espère que vous allez bien!Comment obtenir la taille de bitmap d'origine après le chargement de l'URL dans ImageLoader | Android

Je travaille avec Universal Image Loader, j'ai besoin d'obtenir l'original bitmap de l'URL.

Voici mon code -

imageLoaderNew.loadImage(bean.getPostMedia().get(i).getUrl(), optionsPostImg, 
     new SimpleImageLoadingListener() { 
     @Override 
     public void onLoadingComplete(String imageUri, 
             View view, 
            Bitmap loadedImage) { 
    // Do whatever you want with Bitmap 
                 } 
             }); 

La hauteur et la largeur de loadedImage est pas même que la hauteur et la largeur de Bitmap d'origine.

Ma largeur de la hauteur d'image d'origine est de 2208,1108 mais le chargeur d'images ne donne pas le bitmap d'origine.

Voici la configuration de l'image Chargeur -

optionsPostImg = new DisplayImageOptions.Builder() 
        .showImageOnLoading(R.drawable.post_img_default) // 
        .showImageForEmptyUri(R.drawable.post_img_default) 
        .showImageOnFail(R.drawable.post_img_default) 

        .cacheInMemory(true) 
        .cacheOnDisk(true) 
        .considerExifParams(true) 
        .imageScaleType(ImageScaleType.EXACTLY) 

        .build(); 

S'il vous plaît laissez-moi savoir, comment obtenir le Bitmap d'origine.

+0

télécharger juste le fichier. Il n'y a pas de bitmap d'origine pour commencer. Seulement un fichier original. – greenapps

+0

Mais si je vais télécharger le fichier, il va consommer beaucoup de mémoire. –

+0

Non, rien. Peut-être 8192 octets pour un tampon dans une boucle. C'est tout. – greenapps

Répondre

0

Vous ne devez pas télécharger l'image originale si elle est trop grande cela entraînera des problèmes de mémoire insuffisante, mais de toute façon, vous pouvez télécharger le fichier original depuis l'URL indiquée.

public Bitmap getBitmapFromURL(String src) { 
    try { 
     java.net.URL url = new java.net.URL(src); 
     HttpURLConnection connection = (HttpURLConnection) url 
       .openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap myBitmap = BitmapFactory.decodeStream(input); 
     return myBitmap; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

Et si vous obtenez des problèmes de mémoire, vous pouvez utiliser suivant

public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) { 
    int width = bm.getWidth(); 
    int height = bm.getHeight(); 
    float scaleWidth = ((float) newWidth)/width; 
    float scaleHeight = ((float) newHeight)/height; 
    // CREATE A MATRIX FOR THE MANIPULATION 
    Matrix matrix = new Matrix(); 
    // RESIZE THE BIT MAP 
    matrix.postScale(scaleWidth, scaleHeight); 

    // "RECREATE" THE NEW BITMAP 
    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, 
      matrix, false); 

    return resizedBitmap; 
} 
+0

Non. Les deux codes erronés. Pour télécharger un fichier, n'utilisez pas un bitmap intermédiaire car cela changera le fichier et provoquera des problèmes de mémoire. – greenapps