Android圖片記憶體溢位的解決方案
1.圖片記憶體溢位
預設情況下,每個android程式的dailvik虛擬機器的最大堆空間大小為16M
當載入的圖片太多或圖片過大時經常出現OOM問題
android 中用bitmap 時很容易記憶體溢位,報如下錯誤:Java.lang.OutOfMemoryError
2.解決辦法
public Bitmap matrixBitmapSize(Bitmap bitmap, int screenWidth, int screenHight) { //獲取當前bitmap的寬高 int w = bitmap.getWidth(); int h = bitmap.getHeight(); Matrix matrix = new Matrix(); float scale = (float) screenWidth / w; float scale2 = (float) screenHight / h; // 取比例小的值 可以把圖片完全縮放在螢幕內 scale = scale < scale2 ? scale : scale2; // 都按照寬度scale 保證圖片不變形.根據寬度來確定高度 matrix.postScale(scale, scale); // w,h是原圖的屬性. return Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true); } public Bitmap optionsBitmapSize(String imagePath, int screenWidth, int screenHight) { // 設定解析圖片的配置資訊 BitmapFactory.Options options = new Options(); // 設定為true 不再解析圖片 只是獲取圖片的頭部資訊及寬高 options.inJustDecodeBounds = true; // 返回為null BitmapFactory.decodeFile(imagePath, options); // 獲取圖片的寬高 int imageWidth = options.outWidth; int imageHeight = options.outHeight; // 計算縮放比例 int scaleWidth = imageWidth / screenWidth; int scaleHeight = imageHeight / screenHight; // 定義預設縮放比例為1 int scale = 1; // 按照縮放比例大的 去縮放 if (scaleWidth > scaleHeight & scaleHeight >= 1) { scale = scaleWidth; } else if (scaleHeight > scaleWidth & scaleWidth >= 1) { scale = scaleHeight; } // 設定為true開始解析圖片 options.inJustDecodeBounds = false; // 設定圖片的取樣率 options.inSampleSize = scale; // 得到按照scale縮放後的圖片 Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options); return bitmap; }
相關文章
- Android有效解決載入大圖片時記憶體溢位的問題Android記憶體溢位
- Java記憶體溢位的詳細解決方案Java記憶體溢位
- WEBLOGIC 記憶體溢位 解決方案(轉)Web記憶體溢位
- jvm記憶體設定及記憶體溢位、解決方案JVM記憶體溢位
- 解決記憶體溢位九法記憶體溢位
- Android記憶體溢位分析Android記憶體溢位
- Java程式碼執行記憶體溢位詳解及解決方案Java記憶體溢位
- Android載入圖片導致記憶體溢位(Out of Memory異常)Android記憶體溢位
- Windows Tomcat 記憶體溢位解決方法WindowsTomcat記憶體溢位
- java常見的幾種記憶體溢位和解決方案Java記憶體溢位
- Tomcat服務 MyEclipse 記憶體溢位 解決方案(之一)TomcatEclipse記憶體溢位
- 記憶體溢位記憶體溢位
- tomcat記憶體溢位:PermGen space解決方法Tomcat記憶體溢位
- 記錄佇列序列化模型導致的記憶體溢位的解決方案佇列模型記憶體溢位
- 阿里大佬講解Java記憶體溢位示例(堆溢位、棧溢位)阿里Java記憶體溢位
- 記憶體溢位的分析記憶體溢位
- Java記憶體溢位Java記憶體溢位
- JBOSS記憶體溢位記憶體溢位
- 記憶體溢位:native溢位 和 上層溢位記憶體溢位
- tomcat伺服器記憶體溢位解決方法Tomcat伺服器記憶體溢位
- java 讀 大檔案excel 記憶體溢位 解決JavaExcel記憶體溢位
- [jenkins]解決jenkins記憶體溢位問題Jenkins記憶體溢位
- Xamarin Android提示記憶體溢位錯誤Android記憶體溢位
- android防止記憶體溢位淺析(一)Android記憶體溢位
- android防止記憶體溢位淺析(二)Android記憶體溢位
- 記憶體溢位的問題記憶體溢位
- 記憶體溢位和記憶體洩露記憶體溢位記憶體洩露
- 記憶體洩漏和記憶體溢位記憶體溢位
- eclipse啟動時記憶體溢位的解決辦法Eclipse記憶體溢位
- WebLogic: 記憶體溢位Web記憶體溢位
- java 程式記憶體溢位Java記憶體溢位
- 記憶體溢位問題記憶體溢位
- JVM——記憶體洩漏與記憶體溢位JVM記憶體溢位
- 傳說中的記憶體溢位記憶體溢位
- 谷歌安卓5.1.1即將推送:解決記憶體溢位問題谷歌安卓記憶體溢位
- Java記憶體溢位情況Java記憶體溢位
- Flume記憶體溢位錯誤記憶體溢位
- JNI練習-記憶體溢位記憶體溢位