2017-02-23 73 views
0

問候!!! 希望你們都做得很好!如何在ImageLoader中加載URL後獲取原始位圖大小| Android

我正在使用Universal Image Loader,我需要從URL中獲取原始位圖。

這裏是我的代碼 -

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 
                 } 
             }); 

的高度和寬度loadedImage不一樣作爲原始的位圖的高度和寬度。

我的原始圖像高度寬度是2208,1108,但圖像加載器沒有給出原始位圖。

這裏是圖像裝載機的配置 -

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(); 

請讓我知道,如何讓原來的位圖。

+0

只需下載該文件。沒有原始位圖開始。只有原始文件。 – greenapps

+0

但是,如果我將下載該文件,它會消耗大量的內存。 –

+0

沒有什麼。也許循環中的緩衝區爲8192個字節。就這樣。 – greenapps

回答

0

如果原圖像太大會導致內存不足問題,則不應下載原始圖像,但無論如何,您可以從給定網址下載原始文件。

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; 
    } 
} 

,如果你得到的內存問題,那麼你可以使用以下

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

編號錯誤的代碼。要下載文件,不使用中間位圖,因爲這會更改文件並導致內存問題。 – greenapps

相關問題