gpt4 book ai didi

android - 使用 inSampleSize <2 或以其他方式调整位图大小而不会遇到 OoM

转载 作者:行者123 更新时间:2023-11-29 18:18:50 25 4
gpt4 key购买 nike

我有带有文本的大型可缩放位图,我想稍微调整一下。最简单的方法是使用 inSampleSize,但它工作的最小值是 2,这是 Not Acceptable (将图像大小减半基本上会使文本不可读)。

createScaledBitmap 工作正常,但由于 Android 对位图的垃圾回收速度较慢,我有时会在它后面的方法中遇到 OutOfMemory(我在解码后调用 createBitmap)。

所以,我想知道有没有一种方法可以将位图的大小减少一半,而且不会出现内存问题?

最佳答案

欢迎来到我个人的 hell ......

我正在使用 2 个位图,一个是原始图像的缩放版本,它被缩放以适合屏幕。当我想放大以使文本更易读时,我切换到将用于缩放的原始位图。

根据我对大位图的所有经验,得出一个解决方案:自己处理位图的整个生命周期。不要只是将位图引用设置为 null,在释放引用之前回收它。还可以在那里捕获可能的 OOME 和可用内存。清理一切并再次尝试最后的位图解码。

我有多个这样的电话:

try {
try {
mBitmap = BitmapFactory.decodeFile(uri, mOptions);
}
catch (OutOfMemoryError e) {
freeMemory();
// retry
mBitmap = BitmapFactory.decodeFile(uri, mOptions);
}
}
catch (OutOfMemoryError e) {
Log.e("THREAD", "FATAL OOME ..." + mPageNumber, e);
}

关于android - 使用 inSampleSize <2 或以其他方式调整位图大小而不会遇到 OoM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com