安卓获取图片缩略图的两种方式
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; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories