1. 程式人生 > >Android 獲取圖片資源格式(png、jpeg、gif、bmp、...)

Android 獲取圖片資源格式(png、jpeg、gif、bmp、...)

做開發的時候有時需要獲取圖片的型別格式,如常見的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);