我正在開發一個解碼jpeg文件並使用canvas.drawBitmap()在畫布上繪製位圖的android應用程序。我正在使用BitmapFactory.decodeStream()將jpeg解碼爲位圖。解碼大位圖時出現OutOfMemoryError
當我使用諸如2560x1536等分辨率的圖像時,一切正常。最近,我做了一個壓力測試,試圖打開一個非常大的分辨率爲5400x3600的jpeg。我的應用程序崩潰,錯誤爲「java.lang.OutOfMemoryError」。
這裏是堆棧跟蹤:
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:720)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:696)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:734)
...
這是可以理解的,因爲這是一個大的圖像和解碼的位圖使用了大量的內存。
但是,我想了解的是在同一部手機上,如果使用圖庫應用程序,圖庫應用程序可以顯示相同的大圖像而不會有任何問題。
在同一部手機上,如果我還嘗試用一些圖片編輯工具打開相同的大圖片,我認爲它也應該將jpeg解碼爲位圖,然後一切正常。這些應用需要多一點的時間才能顯示圖像,但圖像會在屏幕上加載和繪製。
我想了解我可能做錯了什麼,與其他應用程序相比有什麼不同?
你的答案就在這裏[鏈接] {} https://stackoverflow.com/questions/25719620/how-to-solve-java-lang-outofmemoryerror-trouble-in-android –
是否將這些圖像存儲在可繪製的文件夾中? – Shruti
歡迎@RichardT –