从/向文件读写位图的最快方法是什么?

6

我目前正在将位图写入png文件,也正在从文件中读回位图。我正在寻找提高写入和读取速度的方法。由于我需要将它们读回以进行编辑,所以图像必须是无损的。

我看到最差性能的地方是实际的 BitmapFactory.decode(...)

几个问题:
1. 有没有更快的解决方案,可以使用NDK从文件中读写位图?
2. 有没有更好的库可以更快地解码位图?
3. 存储和读取位图的最佳方法是什么?


一些想法:
  1. 你想要写入哪里?
  2. 可能不是。解码非常昂贵。
  3. 有许多压缩方案,但我个人喜欢9-patches。
- hwrdprkns
我更新了我的问题,提到了文件。嗯,9-patch肯定行不通。这些图像是无法进行9-patch的绘图。一定有某种类型的NDK库可以更快地解码吧? :P - Jona
嗯,我认为如果你有一张已经压缩到极限的JPEG图像,除非你事先了解这个图像的一些信息... - hwrdprkns
谢谢你的提示,我在想通过将图像压缩为JPEG格式,再解压缩回位图格式是否会导致图像质量下降?或者它总是可以完全还原的吗?这假设使用最少压缩。 - Jona
没错。嗯,第一次压缩时可能会失去一些质量,但之后你应该能够保持相同的质量标准。也许你可以检查一下文件是否已经是JPEG格式了。我相信你知道压缩已经压缩过的文件会使它们变得更大。 - hwrdprkns
谢谢您的回复。我之前应该提到这些图片必须是无损的,因为我需要来回编辑这些图片。 - Jona
1个回答

6
尝试解决读/写图像文件的最佳/最快方式,发现使用传统的BitmapFactory最为有效。尝试使用NDK进行编码/解码,但并没有什么区别。

基本上,使用无损PNG格式是最好的选择,因为不会在编辑图像后失去任何质量。

所有这些中的主要概念是,我需要了解编码所需时间与解码所需时间之间的差异。编码数字介于300-600ms之间,取决于图像大小,而解码速度非常快,约为10-23ms。

在理解所有这些之后,我只需创建一个工作线程,将需要编码的图像传递给它,并让它在不影响用户体验的情况下完成工作。该图像被保留在内存中以防需要立即使用,直到完全编码并保存到文件之前。


你如何解决这个问题? - Sabish.M
你能详细解释一下吗?你如何解决这个问题? - Sabish.M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接