簡體   English   中英

Android中是否有任何有效的方法可以從文件中縮小大圖像並將其保存到新文件而無OOM異常

[英]Is there any efficient way in Android to downscale large image from file and save it to new file without OOM exception

我在這個問題上困擾了很長時間。 我有一個特殊情況:我需要調整(縮小)存儲在文件中的現有大型圖像的大小並將其保存到新文件中。 我沒有在圖像視圖中顯示此圖像,因此在這種情況下,諸如使用Glide,Picasso或options.inJustDecodeBounds = true將無濟於事。 例如,我有8k圖像,我需要將其縮小為4K,然后保存到新文件。 在低端設備上,當我使用options.inJustDecodeBounds = true ,計算inSampleSize然后調用BitmapFactory.decodeResource(res, resId, options)時,我很可能會看到OOM異常BitmapFactory.decodeResource(res, resId, options)因為它將嘗試為4K位圖分配內存(結果位圖將在保存到磁盤之前先存儲在內存中)。 有什么建議么?

Android框架中有一個類可用於一次僅解碼圖像的一小部分: BitmapRegionDecoder 正如@emandt所提到的那樣,盡管您可以嘗試選擇不同的區域大小(雖然縮放比例的某些倍數可能會改善結果),但是以這種方式調整大小可能會給您帶來一些不良的結果。 根據您的要求,這些工件可能不是問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM