2017-02-23 67 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

相关问题