如何加载高分辨率图像

时间:2014-07-10 10:11:58

标签: android resolution

我有一个高分辨率(1188 * 17617 2.35MB)的图像,我想在我的Android APP中加载它。 如果我使用WebView,则可以显示图像。但它模糊不清。我用Android OS中的浏览器打开它,它也模糊不清。 如果我使用ImageView,它只显示任何内容。

2 个答案:

答案 0 :(得分:1)

如果位图太大,可以在将位图加载到内存之前缩小它们。您可以使用BitmapFactory.Options完成此操作,并根据您的要求进行缩减。

public static Bitmap decodeSampledBitmapFromPath(String path, int reqWidth,
                int reqHeight) {

       final BitmapFactory.Options options = new BitmapFactory.Options();
       options.inJustDecodeBounds = true;
       BitmapFactory.decodeFile(path, options);

       options.inSampleSize = calculateInSampleSize(options, reqWidth,
                reqHeight);

        // Decode bitmap with inSampleSize set
        options.inJustDecodeBounds = false;
        Bitmap bmp = BitmapFactory.decodeFile(path, options);
        return bmp;
    }

    public static int calculateInSampleSize(BitmapFactory.Options options,
             int reqWidth, int reqHeight) {

        final int height = options.outHeight;
        final int width = options.outWidth;
        int inSampleSize = 1;

        if (height > reqHeight || width > reqWidth) {
            if (width > height) {
                    inSampleSize = Math.round((float) height / (float) reqHeight);
            } else {
                    inSampleSize = Math.round((float) width / (float) reqWidth);
            }
        }
     return inSampleSize;
   }

答案 1 :(得分:0)

使用Picasso库。 http://square.github.io/picasso/

它为您处理所有事情,包括下载,缓存,最重要的是通过调整大小功能进行下采样。它也适用于标准的ImageView,只需很少的代码:

Picasso.with(上下文)   .load(URL)   .resize(50,50)   .centerCrop()   .into(ImageView的)