Android 按指定大小讀取圖片的實例
在Android開發(fā)中,我們經(jīng)常遇到Android讀取圖片大小超過屏幕顯示的圖(一般只要顯示一定規(guī)格的預覽圖即可),在圖片特別多或者圖片顯示很頻繁的時候要特別注意這個問題,下面介紹個按指定大小讀取圖像的方法。
實現(xiàn)原理:首先獲取圖片文件的圖像高和寬,如果小于指定比例,則直接讀??;如果超過比例則按指定比例壓縮讀取。
捕獲OutOfMemoryError時注意點:后面返回的是null,不要馬上從別的地方再讀圖片,包括R文件中的,不然依然會拋出這個異常,一般在初始化的時候緩存默認圖片,然后顯示緩存中的圖片。
/** 獲取圖像的寬高**/
public static int[] getImageWH(String path) { int[] wh = {-1, -1}; if (path == null) { return wh; } File file = new File(path); if (file.exists() && !file.isDirectory()) { try { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; InputStream is = new FileInputStream(path); BitmapFactory.decodeStream(is, null, options); wh[0] = options.outWidth; wh[1] = options.outHeight; } catch (Exception e) { Log.w(TAG, "getImageWH Exception.", e); } } return wh; } public static Bitmap createBitmapByScale(String path, int scale) { Bitmap bm = null; try { //獲取寬高 int[] wh = getImageWH(path); if (wh[0] == -1 || wh[1] == -1) { return null; } //讀取圖片 BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = Math.max(wh[0]/scale, wh[1]/scale); InputStream is = new FileInputStream(path); bm = BitmapFactory.decodeStream(is, null, options); } catch (Exception e) { Log.w(TAG, "createBitmapByScale Exception.", e); } catch (OutOfMemoryError e) { Log.w(TAG, "createBitmapByScale OutOfMemoryError.", e); //TODO: out of memory deal.. } return bm; }
以上就是解決Android 讀取圖片大小顯示的問題,有需要的朋友可以參考下。
相關文章
Android中使用socket使底層和framework通信的實現(xiàn)方法
native和framework的通信是通過jni,但是這一般只是framework調(diào)用native,native如果有消息要怎樣通知上層 呢?android中GSP模塊提供一種解決思路,但是實現(xiàn)有些復雜,這里介紹一種使用socket通信的方法可以使native和framework自由通信,感興趣的朋友一起看看吧2016-11-11Android指紋識別功能深入淺出分析到實戰(zhàn)(6.0以下系統(tǒng)解決方案)
指紋識別在現(xiàn)實應用中已經(jīng)很多了,本篇文章主要介紹了Android指紋識別功能,具有一定的參考價值,有需要的可以了解一下。2016-11-11Android仿微信滑動彈出編輯、刪除菜單效果、增加下拉刷新功能
這篇文章主要介紹了Android仿微信滑動彈出編輯、刪除菜單效果、增加下拉刷新功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-01-01Android在OnCreate中獲取控件的寬度和高度的實現(xiàn)代碼
在Android中,有時需要對控件進行測量,得到的控件寬度和高度可以用來做一些計算。在需要自適應屏幕的情況下,這種計算就顯得特別重要2012-11-11Android Lottie實現(xiàn)中秋月餅變明月動畫特效實例
Lottie是Airbnb開源的一個支持 Android、iOS 以及 ReactNative,利用json文件的方式快速實現(xiàn)動畫效果的庫,下面這篇文章主要給大家介紹了關于Android Lottie實現(xiàn)中秋月餅變明月動畫特效的相關資料,需要的朋友可以參考下2021-09-09Android自定義EditText實現(xiàn)登錄界面
這篇文章主要為大家詳細介紹了Android自定義EditText實現(xiàn)登錄界面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12