转载请注明出处:http://blog.csdn.net/forevercbb/article/details/50637667
最近一段时间做图片缩略图的加载,发现网上的信息杂乱无章,掺杂着许多无效信息,浪费许多时间,经过大量的搜索与实践,整理出来一些能正常使用的方法。
通过MediaStore获取缩略图
Cursor cursor2 = MediaStore.Images.Thumbnails.query(// 查询数据库中所有缩略图
mActivity.getContentResolver(), MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, STORE_THUMB_IMAGES);
PS:系统不会自动生成缩略图
如何让系统生成缩略图(没有找到明确的官方说明,但测试可用)
1、android.provider.MediaStore.Images.Thumbnails. getThumbnail(ContentResolver cr, long origId, int kind, BitmapFactory.Options options)
2、MediaScannerConnection.scanFile(context, paths, mimeTypes, callback);
BitmapFactory创建缩略图
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(path, options);
float realWidth = options.outWidth;
float realHeight = options.outHeight;
int scale = (int) ((realHeight > realWidth ? realHeight : realWidth) / 100);
options.inSampleSize = scale;
options.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeFile(path, options);
ThumbnailUtils加载缩略图
ThumbnailUtils.extractThumbnail(source, width, height) //source为Bitmap
ThumbnailUtils.createVideoThumbnail(filePath, kind);
采用框架加载缩略图
Universal-Image-Loader:资历比较老,使用较为广泛。有比较多的参数可以配置,对图片压缩实在无力。
Picasso:使用较为简单,仅需一句代码便能实现功能。图片质量较高,库的体积小。但不能加载视频缩略图。内存开销大于Glide。
Glide:使用与Picasso类似,图片加载速度较快,可以加载视频缩略图,可以加载gif动图,功能较多。是google推荐的图片加载框架。但库的体积大,占用缓存大于Picasso,图片质量差。
音乐缩略图加载路径
String uri = "content://media/external/audio/media/" + id + "/albumart";