.NET中最快的图像大小调整

Ash*_*Ash 8 .net c# resize image image-processing

我需要最快的库来调整全尺寸图像(大小高达9MB)到多种尺寸.

这是场景:

  • 用户上传照片
  • FileSystemWatcher正在服务中运行,观察丢弃位置(在SAN上)
  • 当出现新照片时,该服务将以完整的JPEG质量创建4个版本的图像:
    • 100px宽
    • 320px宽
    • 640px宽
    • 1280宽

如果库是C/C++或其他任何东西,我都不会感到困惑,只要我可以通过.NET进入它就很酷.

此外,还需要扩展到可能有1,000个活跃用户.

让我知道你的想法 :)

Ars*_*yan 7

这是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 ;
}
Run Code Online (Sandbox Code Playgroud)

这里是WPF方式TransformedBitmap类

  • 应该使用Graphics包装而不是显式调用Dispose来包装. (4认同)

pix*_*ker 7

我推荐ImageResizer:

主要特点是:

  • RESTful基于URL的图像API(例如:src ="img.jpg?w = 170")
  • 直观裁剪,调整大小,旋转,翻转,约束和编码
  • 将PDF渲染为图像
  • 19个免费插件涵盖了最常见的任务
  • 磁盘+内存输入/输出缓存
  • 8位PNG/GIF和动画GIF处理
  • 灵活的文本和图像叠加支持
  • 图像过滤套件(需要许可证)
  • 高性能
  • 和更多 ....

使用Nuget进行安装:

PM> Install-Package ImageResizer.MvcWebConfig
PM> Install-Package ImageResizer.Plugins.DiskCache
PM> Install-Package ImageResizer.Plugins.PrettyGifs
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问:http: //imageresizing.net/docs/install/nuget


Bri*_*tle 6

有很多文章展示了这个基础知识.我使用了Atalasoft的组件,发现它们的质量非常好.调整大小和处理JPEG图像有一些细微差别.

您似乎真的关心性能但是您并没有提供足够的信息来帮助我们为您提供良好的优化.无论您在做什么,都需要进行全面的性能分析,并了解运行缓慢的情况.在某些情况下,如果其他事情被优化,那么缓慢但可维护的图像处理代码可能是正常的.

一个性能良好的解决方案是对需要转换的传入文件进行排队.添加更多计算机以处理队列中的更多消息,或优化服务代码以获得更好的吞吐量.如果你正确设计,处理大量用户真的并不困难.