/**
* 根据指定的图像路径和大小来获取缩略图
* 此方法有两点好处:
* 1. 使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度,
* 第二次读取的bitmap是根据比例压缩过的图像,第三次读取的bitmap是所要的缩略图。
* 2. 缩略图对于原图像来讲没有拉伸,这里使用了2.2版本的新工具ThumbnailUtils,使
* 用这个工具生成的图像不会被拉伸。
* @param imagePath 图像的路径
* @param width 指定输出图像的宽度
* @param height 指定输出图像的高度
* @return 生成的缩略图
*/
private void getImageThumbnail(ImageView thumbnails_img,String imagePath,int width,int height) {
asy = new AsyncImageTask(thumbnails_img,width,height);
asy.execute(imagePath);
}
/**
* 使用异步线程加载图片
* 线程池
*/
private final class AsyncImageTask extends AsyncTask<String,Integer,Bitmap>{
private ImageView thumbnails_img;
private int width;
private int height;
public AsyncImageTask(ImageView thumbnails_img,int width, int height) {
this.thumbnails_img = thumbnails_img;
this.width = width;
this.height = height;
}
protected Bitmap doInBackground(String... params) {
img_bitmap = null;
//节约内存
options.inPreferredConfig = Bitmap.Config.ARGB_4444;/*设置让解码器以最佳方式解码*/
options.inPurgeable = true;
options.inInputShareable = true;
options.inJustDecodeBounds = true;
//If diTher is true, the decoder will attempt to dither the decoded image
options.inDither = false;//不进行图片抖动处理
// 获取这个图片的宽和高,注意此处的bitmap为null
img_bitmap = BitmapFactory.decodeFile(params[0], 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
img_bitmap = BitmapFactory.decodeFile(params[0], options);
// 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象
img_bitmap = ThumbnailUtils.extractThumbnail(img_bitmap, width, height,
ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
return img_bitmap;
}
//处理结果
protected void onPostExecute(Bitmap result) {
if(result!=null&&thumbnails_img != null){
thumbnails_img.setImageBitmap(result);
asy_list.add(asy);
asy = null;
// img_bitmap.recycle();
img_bitmap=null;
}
}
}
安卓异步加载图片(缩略图显示)的实现
最新推荐文章于 2021-05-31 15:16:56 发布