導航:首頁 > 文件處理 > androidbitmap壓縮大小

androidbitmap壓縮大小

發布時間:2025-07-04 05:35:29

android載入大圖片的時候如何防止內存溢出

【答案】:android系統給圖片分配的內存只有8M,當載入大量圖片時往往會出現OOM。
Android載入大量圖片內存溢出解決方案:
1)盡量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource來設置一張大圖,因為這些函數在完成decode後,最終都是通過java層的createBitmap來完成的,需要消耗更多內存,可以通過BitmapFactory.decodeStream方法,創建出一個bitmap,再將其設為ImageView的 source
2)使用BitmapFactory.Options對圖片進行壓縮
InputStream is = this.getResources().openRawResource(R.drawable.pic1);
BitmapFactory.Options ptions=new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10; //width,hight設為原來的十分一
Bitmap btp =BitmapFactory.decodeStream(is,null,options);
3)運用Java軟引用,進行圖片緩存,將需要經常載入的圖片放進緩存里,避免反復載入
及時銷毀不再使用的Bitmap對象
if(!bmp.isRecycle() ){
bmp.recycle() //回收圖片所佔的內存
system.gc() //提醒系統及時回收
}

Ⅱ android開發,上傳圖片時,怎樣自動壓縮成800x600的尺寸求指教~~

protected Bitmap scaleImg(Bitmap bm, int newWidth, int newHeight) {
// 圖森螞纖片源
// Bitmap bm = BitmapFactory.decodeStream(getResources()
// .openRawResource(id));
// 獲得圖片的寬高
int width = bm.getWidth();
int height = bm.getHeight();
// 設置想要的物賀大小
int newWidth1 = newWidth;
int newHeight1 = newHeight;
// 計算縮放比此仿例
float scaleWidth = ((float) newWidth1) / width;
float scaleHeight = ((float) newHeight1) / height;
// 取得想要縮放的matrix參數
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// 得到新的圖片
Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix,
true);
return newbm;

}
你可以試下,如果不行,建議你還是先壓縮在上傳。

Ⅲ 性能優化:Android中Bitmap內存大小優化的幾種常見方式

在Android中,優化Bitmap內存大小的常見方式有以下幾種:

  1. 采樣率壓縮

    • 方法:通過改變采樣率來縮小Bitmap的寬高,從而降低內存需求。
    • 適用場景:適用於原有圖片寬高過大、目標尺寸較小的情況。
    • 效果:例如,將原圖大小縮小至1/4,內存佔用相應減少至原來的1/16。
  2. 矩陣壓縮

    • 方法:使用Bitmap.createBitmap或Bitmap.createScaledBitmap方法進行縮放。
    • 適用場景:適用於原圖大小和目標Bitmap尺寸已知的情況。
    • 效果:內存佔用可以減少至原圖的1/100左右。
  3. 更改配置

    • 方法:將默認的Bitmap.Config.ARGB_8888改為佔用位元組更少的配置,如ARGB_4444或RGB_565。
    • 適用場景:適用於對圖像解析度要求不高,且對圖像透明度要求不高的場景。
    • 效果:可以有效減少Bitmap的內存佔用。
  4. 質量壓縮

    • 方法:通過Bitmap.compress方法調整quality參數來減小生成的位元組流大小。
    • 注意:此方法不影響Bitmap在內存中的佔用,但會減小生成的圖片文件的位元組大小。
    • 適用場景:適用於需要傳遞二進制圖片數據的場景,如社交媒體分享。
    • 效果:可以在保持圖像質量的同時,減小圖像的位深、透明度等。

在實際開發中,應根據具體需求選擇合適的優化策略,以提升應用的性能和響應速度,並有效避免內存溢出問題。

Ⅳ 性能優化:Android中Bitmap內存大小優化的幾種常見方式

Android中優化Bitmap內存大小是提升應用性能的關鍵步驟。Bitmap佔用內存大小的計算遵循其配置(Bitmap.Config)和大小。默認配置下,每個像素佔用4位元組。因此,優化主要通過調整寬度、高度或配置來減少內存消耗。

優化策略包括:

1. **采樣率壓縮**:通過改變采樣率來縮小Bitmap大小,以此降低內存需求。例如,將原圖大小從640px * 360px縮小至1/4,內存佔用相應減少至原來的1/16。該方法適用於原有圖片寬高過大、目標尺寸較小的情況,避免了不必要的內存浪費。

2. **矩陣壓縮**:使用Bitmap.createBitmap或Bitmap.createScaledBitmap方法進行縮放。設定縮放比例後,內存佔用減少至原圖的1/100。適用於原圖大小和目標Bitmap尺寸已知的情況。

3. **更改配置**:將默認的Bitmap.Config.ARGB_8888改為佔用位元組更少的配置,如ARGB_4444或RGB_565。對於非透明度要求高的圖像,使用RGB_565更為合適。此方法適用於對圖像解析度要求不高的場景。

4. **質量壓縮**:通過Bitmap.compress方法調整quality參數來減小生成的位元組流大小,而不影響Bitmap內存佔用。此方法在保持圖像質量的同時,減小了圖像的位深、透明度等,適用於需要傳遞二進制圖片數據的場景,如微信分享。

在實際開發中,應根據具體需求選擇合適的優化策略。優化Bitmap內存大小不僅能夠提升應用的性能和響應速度,還能有效避免內存溢出問題。

閱讀全文

與androidbitmap壓縮大小相關的資料

熱點內容
pdf去 瀏覽:541
嵌入式編譯器優化 瀏覽:125
不同品牌安卓一鍵換機用什麼軟體 瀏覽:955
二年下冊運演算法則 瀏覽:135
蘭溪兩級壓縮空壓機 瀏覽:135
網頁如何取回伺服器上的文件 瀏覽:94
linuxphp重啟命令行 瀏覽:573
為什麼我的所有app都登錄不了 瀏覽:555
別樣app海淘怎麼樣 瀏覽:510
聯通app扣費是什麼意思 瀏覽:382
android應用程序管理員許可權 瀏覽:85
石家莊十萬程序員 瀏覽:974
java繼承類實例 瀏覽:289
疫情期間程序員的工資 瀏覽:30
最好的python編譯器 瀏覽:189
安卓手機如何調分屏 瀏覽:731
安卓系統藍牙耳機如何用 瀏覽:721
為什麼微信不能給appstore充值 瀏覽:495
程序員的保護動物 瀏覽:275
程序員遇到問題去哪個網站 瀏覽:531