快速解码JPEG图像的方法

7
我需要解码(将其解压成位图)一个相当小的JPEG(大约1200 * 1200),但问题是我需要快速完成。我已经尝试了libjpeg,但它的速度相当慢。我也尝试了BitmapFactory.decodeByteArray-它稍微快一些,但仍然不够快。还有其他的选择吗? 比较推荐使用本地(C++)库。
P.S. 我的JPEG直接在内存中创建。
P.P.S. 我不知道为什么libjpeg比BitmapFactory.decodeByteArray慢。

4
1200x1200被认为是“相当小”的,从什么时候开始?大多数屏幕只有320x240左右。我的桌面分辨率只有1280x1024。(1)制作一个更小的JPEG文件。(2)只解码一次并缓存它。 - Mooing Duck
好的观点,实际上 :) 我认为这很小,因为我开始使用DSLR。而且我正在针对平板电脑。现在,至于你的建议:1)尝试过了(比例因子2)-性能仍然不足,进一步降低分辨率是不可接受的。2)不可能,我需要实时显示不同的JPEG(多或少)。 - Violet Giraffe
1
@stealthcopter:据我所知,只有一种这样的指令集——NEON,而我的设备不支持它。我唯一能想到的可能性是Android使用手动优化代码,但ARM指令集并不是你想要手动优化的类型,而且作为RISC架构,它应该被编译器很好地优化了... - Violet Giraffe
回复:关于速度差异:如果 SoC 具备硬件 JPEG 解码器功能(例如,一些三星的 Exynos 系列有此功能),那么框架可能会使用它。不幸的是,即使可用,也无法保证框架将使用此硬件加速,并且在未经 root 的设备上无法直接运行此解码器。 - Alex Cohn
http://www.briancbecker.com/blog/2010/analysis-of-jpeg-decoding-speeds/ - Gabriel
显示剩余3条评论
1个回答

2

1
刚试了一下。速度与官方的libjpeg完全相同,因为我的设备不支持NEON(Tegra 2)。 - Violet Giraffe

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