2025-04-30

大傢都知道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或更高才開始支持的。

作者“ljbal”
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *