程式中一次性載入多張,而且還要適應螢幕,這就造成記憶體緊張,程序會出現oom,特別是現在的手機解析度高達1920*1024,一張占用記憶體高達8m,首先要獲取原的高寬
//減少記憶體
bitmapfactory.options options = new bitmapfactory.options();
options.inpreferredconfig = bitmap.config.rgb_565;
options.inpurgeable = true; //設定可以被**
byte[12 * 1024];//聽說是開啟臨時儲存
options.ininputshareable = true;
bitmap backgroudbitmap = bitmapfactory.decodestream(new fileinputstream(file),null,options);
然後可獲取高寬
float imgwidth = backgroudbitmap.getwidth();
float imgheight = backgroudbitmap.getheight();
// 取得想要縮放的matrix引數
matrix matrix = new matrix();
matrix.postscale(scalewidth, scaleheight);
// 得到新的
bitmap newbm = bitmap.createbitmap(backgroudbitmap, 0, 0,
(int) imgwidth, (int) imgheight, matrix, true);
在然後可以根據新的獲取大小並且用canvas畫圖了
現在原圖可以**了backgroudbitmap.recycle();
backgroudbitmap = null;
因為新的要設定成背景圖,不能現在**,要是縮小還好,要是放大則占用很大的記憶體,如果是1-3張還好,多了之後就會記憶體溢位了,大家有什麼好的方法代替createbitmap進行縮放,或者有什麼好的方法管理記憶體,大家共同學習進步。
android bitmap記憶體限制
doc displaying bitmaps efficiently 這篇是翻譯的,此次是實踐,是關於android系統的解碼的例項 文中說到 攝像頭在galaxynexus拍一張 有2592 1936畫素,如果bitmap使用argb 8888配置 2.3預設的 載入這張 到記憶體需要消耗約19m...
Android Bitmap應用收集
bitmap代表一張位圖,副檔名可以是.bmp或者.dib。點陣圖是windows標準格式圖形檔案,它將影象定義為由點 畫素 組成,每個點可以由多種色彩表示,包括2 4 8 16 24和32位色彩。例如,一幅1024 768解析度的32位真彩,其所佔儲存位元組數為 1024 768 32 8 307...
Android bitmap用法介紹
bitmap是android中重要的影象處理工具類,通過bitmap可以對影象進行剪下 旋轉 縮放等操作,同時還可以指定格式和壓縮質量儲存影象檔案。一 拿到乙個bitmap物件 檢視原始碼我們知道,bitmap被final修飾,因此不可以通過new來獲得乙個bitmap的例項,獲得乙個bitmap物...