Android 獲取圖片資源格式(png、jpeg、gif、bmp、...)
阿新 • • 發佈:2019-01-30
做開發的時候有時需要獲取圖片的型別格式,如常見的jpg、png、gif、bmp等圖片格式。
那麼在Android中如何獲得這些圖片格式呢?
方法一:通過圖片字尾名獲得圖片格式
大多數方法都是通過獲取圖片的字尾名來辨別圖片的型別,其實這樣並不能正確的獲取到圖片的格式,圖片的字尾名並不能說明這個圖片的真正格式是什麼。
方法二:通過圖片頭部標識
這是一種比較靠譜的方法,通過檔案的頭部標識來獲取圖片的格式,這個方法雖然靠譜,但比較麻煩。
方法三:通過BitmapFactory.Options獲取
Android自帶的BitmapFactory.Options也能幫助我們正確的獲取圖片格式,看程式碼:
String path = "圖片路徑";
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);
String type = options.outMimeType;
Log.d("image type -> ", type);
options.inJustDecodeBounds設定為true是為了讓圖片不載入到記憶體中。
BitmapFactory.decodeFile(path, options);這個取得圖片的方法有多種,但要記得加上options,我這裡是傳入一個圖片的完整路徑來取得圖片,也可以通過BitmapFactory.decodeResource(getResources(), R.drawable.xxx, options)等方式,根據實際需要來。
最後通過呼叫options.outMimeType獲取圖片的格式,如果該方法識別不出圖片的格式,就會返回null,還需要注意,這裡獲取的圖片的格式是以:”image/png”、”image/jpeg”、”image/gif”…….這樣的方式返回的,如果我們只需要png、jpeg、gif這些欄位,則需要再擷取一下字串:
String path = "圖片路徑";
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);
String type = options.outMimeType;
if (TextUtils.isEmpty(type)) {
type = "未能識別的圖片";
} else {
type = type.substring(6, type.length());
}
Log.d("image type -> ", type);