/**
* 依据指定的图象路径和大小来获得缩略图
* 此办法有两点利益:
* 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;
}
}
}/**
* 依据指定的图象路径和大小来获得缩略图
* 此办法有两点利益: