问题描述
- 下载缩略图然后再显示的问题
-
我想从 URL 上下载一个图片再放到 SD card 中,再在 imageview 中显示它的缩略图:try { Download(URL); //download picture to SD card/Download File myfile = new File(Environment.getExternalStorageDirectory() + "/Download/", filename); Drawable photo = null; photo = Drawable.createFromPath(myfile.getPath()); imageview.setBackgroundDrawable(photo); }
它显示初始化照片,但是当图像放大就会发生内存错误。所以我想显示小点的图像。那么我该如何做能生成缩略图再显示呢?或者如何让 android 系统生成缩略图?
解决方案
网上很多,随便找个地方copy了个给你
private Bitmap getImageThumbnail(String imagePath, int width, int height) {
Bitmap bitmap = null;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
// 获取这个图片的宽和高,注意此处的bitmap为null
bitmap = BitmapFactory.decodeFile(imagePath, options);
options.inJustDecodeBounds = false; // 设为 false
// 计算缩放比
int h = options.outHeight;
int w = options.outWidth;
int beWidth = w / width;
int beHeight = h / height;
int be = 1;
if (beWidth < beHeight) {
be = beWidth;
} else {
be = beHeight;
}
if (be <= 0) {
be = 1;
}
options.inSampleSize = be;
// 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false
bitmap = BitmapFactory.decodeFile(imagePath, options);
// 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
return bitmap;
}
时间: 2024-10-03 10:25:06