最快的C / C ++图像大小调整库

时间:2009-05-17 05:46:29

标签: c++ c image resize

我正在编写一个需要调整大量图像的应用程序......这些是我的要求:

  • C / C ++
  • 至少支持jpeg / png
  • 快速
  • 跨平台

到目前为止,我的选择是:

  • 的OpenCV
  • CIMG
  • ImageMagick的
  • GraphicsMagick(据说很快)
  • 魔鬼
  • 来自Boost的GIL
  • CxImage的
  • Imlib2(据说很快)
  • 还有其他人吗?

所有这些都可以完成工作,但我在这里寻找最快,而我无法找到任何基准测试。

6 个答案:

答案 0 :(得分:13)

看看Intel IPP (Integrated Performance Primitives)(Wiki链接比英特尔链接更好......)它也适用于AMD,并具有调整图像大小(双线性,最近邻居等)的功能,适用于Linux和Windows

它不是免费的(但它不会破坏银行),但它是你能找到的最快的。

答案 1 :(得分:9)

看看VIPS。这是迄今为止我发现的最快的一个。

答案 2 :(得分:5)

如果IPP确实what you need(例如12节中的函数调整大小),那么我怀疑你会在其他任何地方找到显着更快的x86代码。请记住,当在AMD CPU上运行时,它可能会回落到较慢的“参考实现”上。

如果CPU不能满足您的性能要求,您可以考虑使用OpenGL将调整大小推进到GPU(使用纹理映射的最简单实现将受益于硬件插值器,对于更复杂的过滤使用GLSL着色器代码)。 GPU执行此类操作的速度比CPU快一百倍(给予或取零)的能力必须与进出卡的相对较慢的数据传输进行权衡(通常为每秒一千兆字节或两千兆字节)最多)。

答案 3 :(得分:4)

@Chris Becke的评论:

“只考虑一下这个陈述。在一个(复杂的)步骤中做什么部分会使它更快?图像解码例程仍然需要解码每个像素,以便过滤例程到过滤它们。“

情况并非总是如此。例如,当解码JPEG时,您可以要求JPEG库为您提供1 / 2,1 / 4,1 / 8大小的图像(或类似的东西;它已经有一段时间了,因为我仔细查看)它可以由于JPEG的工作方式,所以无需解码额外的细节。它可以比完全解码+比例快得多。

(显然,如果较小的图像不是您想要的确切尺寸,您可能需要稍后缩放。)

(对不起,由于没有声明,我只能将此回复发表评论。我第一次尝试在这里发布任何内容。如果有人想重新发布此类或类似评论的内容并删除我的答案,请随意! )

答案 4 :(得分:0)

如果你正在寻找免费的东西,并希望快速做事,尝试开发一个Gimp C编译的插件:这很容易,我认为Gimp在调整大小方面做得很好:

这可能不是最快调整大小,但最便宜(免费)和最快开发

看看there

答案 5 :(得分:0)

如果您正在寻找开源,FreeImage怎么样?对于商业用途,我使用Snowbound。两者都非常快,能够使用许多不同的图像格式和调整算法大小。