您的位置:首页 > 移动开发 > Android开发

安卓获取图片缩略图的两种方式

2016-06-17 14:22 411 查看
1、
/**
* 通过内容提供器来获取图片缩略图
缺点:必须更新媒体库才能看到最新的缩略图
* @param context
* @param cr
* @param Imagepath
* @return
*/
public static Bitmap getImageThumbnail(Context context, ContentResolver cr, String Imagepath) {
ContentResolver testcr = context.getContentResolver();
String[] projection = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID, };
String whereClause = MediaStore.Images.Media.DATA + " = '" + Imagepath + "'";
Cursor cursor = testcr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, whereClause,null, null);
int _id = 0;
String imagePath = "";
if (cursor == null || cursor.getCount() == 0) {
return null;
}else if (cursor.moveToFirst()) {
int _idColumn = cursor.getColumnIndex(MediaStore.Images.Media._ID);
int _dataColumn = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
do {
_id = cursor.getInt(_idColumn);
imagePath = cursor.getString(_dataColumn);
} while (cursor.moveToNext());
}
cursor.close();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inDither = false;
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(cr, _id, Images.Thumbnails.MINI_KIND,options);
return bitmap;
}
2、手动以指定的宽高获取
缺点:比较耗时
private void getImageThumbnail(String imagePath,int width,int height) {
Bitmap 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 图片 缩略图