我应该使用什么图像处理库

时间:2011-09-07 07:58:39

标签: image image-processing thread-safety

我一直在阅读https://stackoverflow.com/questions/158756/what-is-the-best-image-manipulation-library并尝试了一些图书馆,现在正在寻找最符合我们需求的输入。我将首先描述我们当前的设置和问题。

我们有一个系统需要调整大小并从大原始图像中裁剪大量图像。我们每天在2台强大的服务器上处理5万多张图像。今天我们使用来自WebSupergoo的ImageGlue但我们根本不喜欢它,它很慢并且偶尔挂起服务(它在另一个未解决的堆栈溢出问题)。我们有一个线程化的Windows服务,它使用Microsoft ThreadPool在8核计算机上尽可能地调整大小。

我已经尝试了AForge并且它非常好,它加载速度更快,从不崩溃或任何东西。但是我在一些图像上遇到质量问题。由于我使用了什么算法,因此可以进行调整。但是想扩大我们的视野,看看这是不是正确的方法。

这样:

  • 它需要是c#.net并在Windows服务中运行。 (因为我们不会改变服务的其余部分只有图像处理)
  • 需要很好地处理线程环境。
  • 我们非常需要快速,因为它今天太慢了。但我们也想要高质量和小文件大小,因为这些图像后来显示在网页上,有大量访问者并且需要高质量。

因此,我们对能够快速获得上帝质量的能力提出了很多要求,并且即使可以通过压缩进行调整,也可以降低文件大小。

有关使用哪个库的任何意见或建议?

1 个答案:

答案 0 :(得分:1)

我理解你仍然希望仍然使用C#但提供替代方案。

根据您正在进行的大量工作,操作图像的最快方法是完全在GPU上完成(这将卸载大部分像素工作)。您可以从可以从服务中调用的托管C ++与CUDA进行互操作。或者使用DirectX曲面和渲染目标(你可以使用抗锯齿和开箱即用的所有高质量的东西)。

但是,在执行任何操作之前,请确保您的工作负载由三线性/双线性调整大小而不是图像的编码/解码支配。顺便说一下,你需要在每台服务器上至少安装一个快速的nVidia显卡来进行卸载(便宜的GTX 460就足够了)。