看瞭些許文章,有很多都是用到瞭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的專欄