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