繁体   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