2025-02-10

 

看瞭些許文章,有很多都是用到瞭BitmapFactory.Options,設置裡面的一些參數來實現圖片的壓縮

 

現在有一個更好的方法來解決Bitmap OutOfMemory的問題,例

 

 

 

比如你的原始bitmap隻有176*144,但是畫面更新卻要352*288,那麼每次你都要通過BitmapFactory來進行拉伸。

 

 

Matrix matrix = new Matrix(); 

 

float Scale_Width =352; 

 

float Scale_Height = 288;  

 

matrix.postScale(Scale_Width, Scale_Height); 

 

 

Bitmap temp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); 

 

 

然後隻要拉伸的過程中,程序就會多分配一塊內存來存儲拉伸的圖像.

 

那麼就極有可能會出現VMbort OutOfMemory,那麼怎麼解決瞭,如果想把176*144的圖像換成352*288的圖像,那麼你應該這樣做:

 

 

Rect rect = new Rect (0,0,176,144); 

 

RectF rectf = new RectF(0,0,352,288); 

 

canvas.drawBitmap(bitmap_176,rect,rectf,null); 

這樣就解決瞭OOM的問題,不會產生新的內存.

摘自:kangkangz4的專欄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *