1. 程式人生 > >Android之獲取手機上的圖片和視訊縮圖thumbnails

Android之獲取手機上的圖片和視訊縮圖thumbnails

【0】大家都知道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是視訊的,這兩個資料夾為隱藏屬性,一般的檔案管理器都可以看到。

【1】從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或更高才開始支援的。

轉貼自:http://www.android123.com.cn/androidkaifa/665.html