大家都知道Android从1.5开始刚插入SD卡时系统会调用MediaScanner服务进行后台扫描,索引新的歌曲、图片和视频等信息,如果我们需要快速提取图片和视频缩略图可以直接访问 android.provider.MediaStore.Images.Thumbnails 和android.provider.MediaStore.Video.Thumbnails这两个数据库,即可查询出来缩略图
如何判断文件呢? 可以通过Cursor遍历数据库,对比INTERNAL_CONTENT_URI字段的值,这是一个Uri我们可以转成String,这里保存着Android手机SD卡上的多媒体文件完整路径,
有关具体的缩略图可以通过getThumbnail(ContentResolver cr, long origId, int kind, BitmapFactory.Options options) 或getThumbnail(ContentResolver cr, long origId, long groupId, int kind, BitmapFactory.Options options) 方法获取,这两种方法返回Bitmap类型,而缩略图的分辨率可以从HEIGHT和WIDTH两个字段提取,在Android上缩略图分为两种,通过读取KIND字段来获得,分别为MICRO_KIND和MINI_KIND 分别为微型和迷你两种缩略模式,前者的分辨率更低。这样我们平时获取文件系统的某个图片预览时,可以直接调用系统缩略图,而不用自己重新计算。
最后Android123提示大家,缩略图保存在SD卡的DCIM目录,里面的.thumbnails是图片的,而.video_thumbnails是视频的,这两个文件夹为隐藏属性,一般的文件管理器都可以看到。
从Android2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework的android.media.ThumbnailUtils位置,可以帮助我们从mediaprovider中获取系统中的视频或图片文件的缩略图,该类提供了三种静态方法可以直接调用获取。
1. static Bitmap createVideoThumbnail(String filePath, int kind) //获取视频文件的缩略图,第一个参数为视频文件的位置,比如/sdcard/android123.3gp,而第二个参数可以为MINI_KIND或MICRO_KIND最终和分辨率有关
2. static Bitmap extractThumbnail(Bitmap source, int width, int height, int options) //直接对Bitmap进行缩略操作,最后一个参数定义为OPTIONS_RECYCLE_INPUT,来回收资源
3. static Bitmap extractThumbnail(Bitmap source, int width, int height) // 这个和上面的方法一样,无options选项
最后Android开发网再次提醒大家,ThumbnailUtils类是API Level从8或更高才开始支持的。
相关文章
- 用法简单的图片和视频播放的框架Demo
- 获取Android设备的方向,Sensor和SensorManager实现手机旋转角度
- c#获取网络图片 Image和byte[]数组的相互转换
- 前端实现安卓和苹果手机的拍照上传图片和直接上传文件
- uni-app文件下载,获取已下载列表以及文件预览Android和IOS的处理(非视频图片。)
- 【Android】获取手机上所有电话卡的运营商和信号强度
- 图片/视频获取缩略图的几种方式
- RV1126画面质量一:视频基础- 说视频之前先聊聊图像。图像就是图像,大家都知道,是由很多“带有颜色的点”组成的。这个点,就是“像素点” 像素点的英文叫 Pixel (缩写为 PX )。 这个单词是由 Picture ( 图像 ) 和 Element (元素)这两个单词的字母所组成的。 像素 是图像显示的基本单位。所以图片设计有一个一个像素点组成的 我们通常说一幅图片的大小,例如是 1920×1080,就是宽度为 1920 个像素点,高度为 1080 个像素点。 乘积是 2,073,600,也就是说,这个图片是两百万像素,1920×1080,这个也被称为这幅图片的分辨率。分辨率也是显示器的重要指标。 PPI: 什么是 PPI? 那么,我们经常所说的 PPI 又是什么东西呢? PPI,就是“Pixels Per Inch”,每英寸像素数。 也就是,手机(或显示器)屏幕上每英寸面积,到底能放下多少个“像素点”。 这个值当然是越高越好啦! PPI 越高,图像就越清晰细腻 前的功能机,例如诺基亚,屏幕 PPI 都很低,有很强烈的颗粒感。后来,苹果开创了史无前例的“视网膜”(Retina)屏幕, PPI 值高达 326(每英寸屏幕有 326 像素),画质清晰,再也没有了颗粒感。 视频编码基础知识:
- 在Android中如何获取视频的第一帧图片并显示在一个ImageView中
- 织梦DEDECMS更换目录后页面内的图片和缩略图无法显示解决方法