Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 快速JPEG编码库_C++_C_Encoding_Jpeg - Fatal编程技术网

C++ 快速JPEG编码库

C++ 快速JPEG编码库,c++,c,encoding,jpeg,C++,C,Encoding,Jpeg,有人知道C/C++的免费开源jpeg编码库吗?目前我正在使用ImageMagick,它很容易使用,但速度相当慢。我把它比作对英特尔性能原件的评估,IPP的速度简直是疯了。不幸的是,它也需要200美元,我不需要99%的IPP)。而且它只能在英特尔上快速工作 有人做测试吗?还有其他比ImageMagick更快的好库吗 编辑:我使用的是8位版本的ImageMagick,它应该更快。如果您环顾四周,可能会发现旧版本的Intel JPEG库。它不是开源的,但速度很快。它的速度足够快,在733MHz的P-I

有人知道C/C++的免费开源jpeg编码库吗?目前我正在使用ImageMagick,它很容易使用,但速度相当慢。我把它比作对英特尔性能原件的评估,IPP的速度简直是疯了。不幸的是,它也需要200美元,我不需要99%的IPP)。而且它只能在英特尔上快速工作

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


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

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

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

AMD提供了一个开源的IPP替代品。

还有一个相当古老的,我不能保证它的速度。但它应该是稳定的

通过找到。

ImageMagick使用libjpeg(也称为独立的JPEG组库)。如果提高libjpeg的速度,ImageMagick JPEG的速度将提高

有几种选择:

  • 编译一个优化的libjpeg。如果你有一个现代的gcc和至少一个奔腾4,你可以试试
    -O3-msse2
    ,看看它是否能提高你的速度。然后,您可以使用
    LD_LIBRARY_PATH
    或其他方式来加载libjpeg而不是系统文件
  • 试试libjpeg-mmx。它是未维护的,据说是有缺陷的,并且有安全缺陷,但它可能会在您的情况下提高速度

  • 我用100%的质量对512x512 jpeg进行了定时编码(我知道100%不是无损的)。基本上ImageMagick只比libjpeg稍微慢一点。对于100张图片,差异大约为10秒。然后,我得到了带有SIMD扩展名()的libjpeg,而且速度快了6-10倍。请注意,这实际上取决于图像的类型。有大量黑色的图像速度非常快,到处都有细节的图像速度非常慢——我相信这是编码算法。我可能不得不尝试一下libjpeg-mmx,因为它看起来比我得到的日文版本更容易维护,我甚至不知道许可证是什么


    我也试着让Framewave工作,但却无法让它离开地面。头文件缺少某些结构的定义,论坛完全不提供支持。我简直不敢相信它是“由AMD赞助的”。

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


    谢谢,尽管我使用了boost,但我还是错过了这个。我不确定,但是GIL使用libjpeg对JPEG进行解码和编码,所以这里重要的是libjpeg的性能。GIL是一个通用的图像处理库,它不在本机上实现任何I/O和压缩。相反,正如Qubeuc提到的,它依赖于第三方库。目前,已经使用libjpeg为JPEG和使用libpng的PNG实现了GIL-IO扩展。也许TIFF(libtiff)也可以使用,我不确定。什么是“慢”?你能给出数字吗?在这一点上没有。我只知道当我要求它对一堆图像进行编码时,CPU的使用率是%。我想说IPP是快了一个数量级。但我正在得到一些实数。不幸的是,我不能分析JPEG解码速度。每个人都提到英特尔,当然它不再提供了。如果你有一个链接,我想有它。从简单的API看,他们似乎提供了JPEG的基础知识,如DCT变换,但我没有看到一个实际的写函数,将给我一个有效的JPEG图像。你用过吗?你能告诉我正确的函数吗?和IPP一样,Framewave是一个“可链接”代码块库,而不是完整的工具函数。你必须自己写/读二进制数据。也就是说,这里有使用IPP读取和写入JPEG的代码:Framewave与IPP“API兼容”,所以需要做的就是用Framewave调用替换IPP调用。这些调用使用完全相同的命名和不同的前缀(fWinceNodeHuffMan8x8_JPEG_16s1u_C1与ipPenceNodeHuffMan8x8_JPEG_16s1u_C1)。这就是我们使用的。我在我的wiki上添加了一篇关于如何为各种架构构建它的文章:libjpeg-turbo非常稳定,现在大多数浏览器都使用它。不要为ijglibjpeg而烦恼。