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

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;
		}




你可能感兴趣的:(安卓)