Android JPEG图像的快速解码方法

Android JPEG图像的快速解码方法,android,c++,android-ndk,jpeg,libjpeg,Android,C++,Android Ndk,Jpeg,Libjpeg,我需要解码(解压成位图)相当小(约1200*1200)的JPEG。问题是我需要快点做。我试过libjpeg,速度很慢。我也尝试过BitmapFactory.decodeByteArray——它有点快,但仍然不够快。还有什么其他选择? 最好使用本机(C++)库 另外,我的JPEG是直接在内存中创建的 我想知道为什么libjpeg比BitmapFactory.decodeByteArray慢。试试libjpeg-Turbo:刚刚试过。速度与官方的libjpeg完全相同,因为我的设备不支持霓虹灯(Te

我需要解码(解压成位图)相当小(约1200*1200)的JPEG。问题是我需要快点做。我试过libjpeg,速度很慢。我也尝试过BitmapFactory.decodeByteArray——它有点快,但仍然不够快。还有什么其他选择? 最好使用本机(C++)库

另外,我的JPEG是直接在内存中创建的


我想知道为什么libjpeg比BitmapFactory.decodeByteArray慢。

试试libjpeg-Turbo:

刚刚试过。速度与官方的libjpeg完全相同,因为我的设备不支持霓虹灯(Tegra 2)。从什么时候开始1200x1200“非常小”?大多数屏幕只有320x240左右。见鬼,我的桌面只有1280x1024。(1)使一个更小的JPEG(2)只解码一次并缓存它。好点,实际上:我认为它是小的,因为我开始使用DSLR。我的目标是平板电脑。现在,对于您的建议:1)尝试(比例因子2)-性能仍然不够,进一步降低分辨率是不可接受的。2) 不行,我需要实时显示不同的JPEG(或多或少)。关于速度差异;android代码可能会使用ARM CPU上的一些指令集来解码JPG,速度比使用CPU的C代码快。@stealthcopter:但据我所知,只有一个这样的指令集——NEON,我的设备不支持它。我看到的唯一可能性是Android使用手动优化的代码,但ARM指令集并不完全是您想要手动优化的类型,而且作为RISC,它应该由编译器很好地进行优化…Re:速度差异:如果SoC确实具有此功能,框架可能会使用硬件JPEG解码器(例如,一些三星的Exynos拥有它)。不幸的是,没有办法保证该框架将使用这种硬件加速,即使它可用,也没有办法直接在无根设备上运行此解码器。