有人知道 C/C++ 的免费开源 jpeg 编码库吗?目前我正在使用 ImageMagick,它易于使用,但速度很慢。我将其与英特尔性能基元的评估进行了比较,IPP 的速度非常快。不幸的是,它也需要 200 美元,而且我不需要 99% 的 IPP)。它也只能在英特尔上快速运行。
有人做任何测试吗?还有其他比 ImageMagick 更快的好的库吗?
编辑:我使用的是 8 位版本的 ImageMagick,它应该更快。
查看 TigerVNC ( http://www.tigervnc.com ) 主干中的 libjpeg/SIMD。我们优化了 64 位和 32 位版本,它们在压缩/解压缩基线 JPEG 时几乎与 IPP 一样快:
http://www.mail-archive.com/tigervnc-devel@lists.sourceforge.net/msg00403.html
我相信 GIL 是 Boost 中的一个库,它包含一种以 JPEG 格式保存图像数据的方法。不过我不知道它的速度。鉴于该库是由 Adobe 赞助的,我希望它做得很好。
AMD 提供Framewave,这是 IPP 的开源替代方案。
ImageMagick 使用 libjpeg(又名独立 JPEG 组库)。如果提高 libjpeg 的速度,ImageMagick JPEG 的速度就会提高。
有几个选项:
-O3 -msse2
看看它是否可以提高你的速度。然后你可以使用LD_LIBRARY_PATH
或其他方式来加载你的 libjpeg 而不是系统的。如果您环顾四周,您可能会发现旧版本的英特尔 JPEG 库。它不是开源的,但速度很快。它的速度足以在 733MHz P-III 上获得 25fps。
我使用 100% 质量对 512x512 jpeg 进行了一些时序编码(我知道 100% 不是无损的)。基本上 ImageMagick 只比 libjpeg 慢一点。对于 100 张图像,差异约为 10 秒。然后我得到了带有 SIMD 扩展的 libjpeg(http://cetus.sakura.ne.jp/softlab/jpeg-x86simd/jpegsimd.html#source),而且速度快了 6-10 倍。请注意,这实际上取决于图像的类型。有很多黑色的图像真的很快,到处都有细节的图像真的很慢——我相信这是编码算法。我可能不得不尝试一下 libjpeg-mmx,因为它看起来比我得到的日文版本维护得更好,我什至不知道许可证是什么。
我也试图让 Framewave 工作,但什至无法启动它。头文件缺少某些结构的定义,论坛完全不提供支持。我不敢相信它是“由 AMD 赞助的”。