快速JPEG编码库

时间:2009-05-15 14:19:44

标签: c++ c encoding jpeg

任何人都知道C / C ++的免费开源jpeg编码库?目前我正在使用ImageMagick,它易于使用,但速度很慢。我将其与英特尔性能基元的评估相比较,IPP的速度是疯狂的。不幸的是它也花费200美元,而且我不需要99%的IPP)。此外,它只能在英特尔上快速工作。

有人做过任何测试吗?还有比ImageMagick快的其他好的库吗?

编辑:我使用的是8位版本的ImageMagick,应该更快。

7 个答案:

答案 0 :(得分:6)

在TigerVNC(http://www.tigervnc.com)的主干中查看libjpeg / SIMD。我们优化了64位和32位版本,在压缩/解压缩基线JPEG时几乎与IPP一样快:

http://www.mail-archive.com/tigervnc-devel@lists.sourceforge.net/msg00403.html

答案 1 :(得分:3)

我相信GIL是Boost中的一个库,它包含一种以JPEG格式保存图像数据的方法。不过,我不知道它的速度。鉴于该库是由Adobe赞助的,我希望它做得非常好。

答案 2 :(得分:3)

AND提供Framewave,这是IPP的开源替代方案。

答案 3 :(得分:2)

ImageMagick使用libjpeg(a.k.a Independent JPEG Group库)。如果你提高libjpeg的速度,ImageMagick JPEG的速度会提高。

有几个选择:

  1. 编译优化的libjpeg。如果你有一个现代的gcc和至少一个奔腾4,你可以尝试-O3 -msse2,看看它是否可以提高你的速度。然后,您可以使用LD_LIBRARY_PATH或其他方式加载libjpeg而不是系统。
  2. 试试libjpeg-mmx。它没有维护,并且据说有错误并且存在安全漏洞,但它可能会提高您的速度。

答案 4 :(得分:1)

如果您环顾四周,可能会发现旧版本的英特尔JPEG库。这不是开源,但速度很快。它的速度足以在733MHz P-III上获得25fps。

答案 5 :(得分:1)

还有Independent JPEG Group相当陈旧,我无法保证它的速度。但它应该是稳定的。

通过this page找到。

答案 6 :(得分:1)

我做了一些使用100%质量编码512x512 jpeg的时序(我知道100%不是无损的)。基本上ImageMagick只比libjpeg略慢。对于100张图像,差异大约是十分之一秒。然后我得到了带有SIMD扩展名(http://cetus.sakura.ne.jp/softlab/jpeg-x86simd/jpegsimd.html#source)的libjpeg,那个东西快了6-10倍。请注意,这实际上取决于图像的类型。有很多黑色的图像真的很快,到处都是细节的图像真的很慢 - 我相信它是编码算法。我可能不得不试试libjpeg-mmx,因为它看起来比我得到的日文版本更加维护,我甚至不知道许可证是什么。

我也试图让Framewave工作,甚至无法让它起飞。头文件缺少某些结构的定义,论坛提供绝对不支持。我不敢相信它是“由AMD赞助的。”