我想在 Android 中加载图像,但如果图像太大,我想在加载之前调整它的大小。我了解到可以使用 BitmapFactory 来获取图像的大小,然后可以找出适当的缩放因子并使用 BitmapFactory 加载具有所需尺寸的图像(根据我在这个相关线程中找到的非常有能力的建议) .
所以我尝试了它,但它拒绝工作。我花了最后一个小时挑选代码,试图弄清楚为什么这样一个简单的操作没有任何效果(缩放因子被完全忽略了!)
然后我偶然发现了Android 问题 3072 ...事实证明,这已被确定为 GIF 文件损坏了两年多。我意识到 GIF 并不完全是现代的,但它仍然存在并且被广泛使用(我的测试集有很多,这就是为什么在我发现错误报告之前它似乎一直被破坏)。
我的问题是,我可以使用什么来替代 BitmapFactory 来在使用缩放因子时正确读取和调整 GIF 文件而不默默地忽略它?内存限制阻止直接加载大图像以进行进一步处理,因此这需要一个流式解决方案。
我的另一个问题是,有多少其他人遇到了像这样的旧的、未修复的错误,或者没有意识到,或者更糟的是,依靠 API 来准确执行请求的功能并最终导致内存泄漏和其他奇怪的意外?