我目前正在製作一個Android應用程序,修改圖像的一些字節。對於這一點,我已經寫了這個代碼:Android:內存友好修改圖像字節
Bitmap bmp = BitmapFactory.decodeStream(new FileInputStream(path));
ByteBuffer buffer = ByteBuffer.allocate(bmp.getWidth()*bmp.getHeight());
bmp.copyPixelsToBuffer(buffer);
return buffer.array();
的問題是,這樣一來佔用過多的堆內存,並拋出OutOfMemoryException
。 我知道我可以讓應用程序的堆內存更大,但它似乎不是一個好的設計選擇。
是否有更友善的方式更改圖像的字節?
在這種情況下增加堆可能實際上不是一個糟糕的設計選擇。特別是圖像編輯器需要比普通應用程序更多的堆內存。實際上,這是一個例子,其中使用了較大的堆大小(請參閱Google I/O關於內存管理的講座 - 我認爲它是從2011年開始的)。 – Rarw
'buffer'是一個'ByteBuffer'? – fge
@fge是的,我會將它添加到帖子中。 – Janman