我需要最快的库来调整全尺寸的图像(有的高达9MB大小),以多种尺寸 。
这里的之情况:
- 用户上传照片
- 一个FileSystemWatcher的是在服务运行看放置位置(SAN上)
- 当一个新的照片显示,该服务将创建4个版本全质量JPEG图像:
- 100像素宽
- 320像素宽
- 640像素宽
- 1280广
如果库是C / C ++或任何其他为此事我没有大惊小怪,只要我可以通过.NET挖掘它,它很酷。
此外,这将需要将规模扩大到1000有可能活跃用户。
让我知道你的想法 :)
我需要最快的库来调整全尺寸的图像(有的高达9MB大小),以多种尺寸 。
这里的之情况:
如果库是C / C ++或任何其他为此事我没有大惊小怪,只要我可以通过.NET挖掘它,它很酷。
此外,这将需要将规模扩大到1000有可能活跃用户。
让我知道你的想法 :)
有很多的文章在那里展示的这个基础 。 我用从组件Atalasoft ,并发现他们是相当不错的品质。 有细微的差别调整,并与JPEG图像的工作。
你似乎是真正关心的性能,但你真的不提供足够的信息,以帮助我们为您推荐好的优化。 不管你在做什么,你需要做一个全面的性能分析和理解什么是运行缓慢。 在某些情况下,如果其他的事情进行了优化slowish,但维护的图像处理代码可能会确定。
良好性能的一个解决方案是队列需要转换传入的文件。 添加更多的机器在队列中处理更多的信息,或优化服务代码,以获得更好的吞吐量。 这真的不是很难处理大量用户的,如果你得到的设计权。
这里的WinForms方式
public Image ResizeImage( Image img, int width, int height )
{
Bitmap b = new Bitmap( width, height ) ;
using(Graphics g = Graphics.FromImage( (Image ) b ))
{
g.DrawImage( img, 0, 0, width, height ) ;
}
return (Image ) b ;
}
这里是WPF的方式TransformedBitmap类
我建议ImageResizer :
主要特点是:
对于安装的NuGet:
PM> Install-Package ImageResizer.MvcWebConfig
PM> Install-Package ImageResizer.Plugins.DiskCache
PM> Install-Package ImageResizer.Plugins.PrettyGifs
欲了解更多信息,请查询: http://imageresizing.net/docs/install/nuget
如果钱是没有对象,LEADTOOLS是传统的“去”库进行图像处理。 话虽这么说,我的第一个倾向是用股票.NET GDI +调用它的代码了,然后做一些测试。 很可能这个解决方案就足够了高性能,但如果没有,你就会有一个底线,从中可以比较其他图书馆和解决方案。 任何涉及产卵的命令行工具将需要创建用于每个图像,这可能否定的去非托管代码的益处的单独过程。
我不知道性能,但开源的OpenCV是一个选项。
空隙cvResize(常量CvArr * I,CvArr *∫,INT插值= CV_INTER_LINEAR);
该功能cvResize调整大小的图像我这样,如果投资回报率设置使其完全适合于J.,功能consideres的投资回报率,支持如常。 使用用于确定在其上最小值截取的像素邻域的形状指定结构元素B中的源图像: