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; }
时间: 2024-10-09 20:43:35