我正在编写一个需要调整大量图像的应用程序......这些是我的要求:
到目前为止,我的选择是:
所有这些都可以完成工作,但我在这里寻找最快,而我无法找到任何基准测试。
答案 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)
答案 5 :(得分:0)
如果您正在寻找开源,FreeImage怎么样?对于商业用途,我使用Snowbound。两者都非常快,能够使用许多不同的图像格式和调整算法大小。