我有一个Web应用程序,用户可以上传图片来创建他们的画廊。几年前,当我编写应用程序时,我选择ImageMagick,并且我做了所有裁剪并调整了ImageMagick的大小。图像裁剪和调整大小ImageMagick vs GDI +在C#
现在,我重写从头开始应用,我换成ImageMagick的原生GDI+操作,但我越了解周围GDI +我害怕我做出了错误的选择更多。
无处不在我读GDI +是桌面的,不应该在服务器应用程序上使用。我不知道细节,但我想这是为了内存消耗,事实上我可以看到GDI +正在使用更多的内存做相同的操作(作物和调整大小)在相同图像比ImageMagick而说实话GDI +更快)。
我相信GDI +,ImageMagick或任何其他库应该对这些基本操作差不多,我喜欢使用本地GDI +的想法,相信无论MS发货的是.NET都应该至少可以。
什么是正确的方法/工具使用?
这是我用农作物代码:
internal Image Crop(Image image, Rectangle r)
{
Bitmap bmpCrop;
using (Bitmap bmpImage = new Bitmap(image))
{
bmpCrop = bmpImage.Clone(r, bmpImage.PixelFormat);
bmpImage.Dispose();
}
return (Image)(bmpCrop);
}
这是我用来调整代码:
internal Image ResizeTo(Image sourceImage, int width, int height)
{
System.Drawing.Image newImage = new Bitmap(width, height);
using (Graphics gr = Graphics.FromImage(newImage))
{
gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.DrawImage(sourceImage, new Rectangle(0, 0, width, height));
gr.Dispose();
}
return newImage;
}
我在这里猜测,但GDI +的某些部分可能取决于包含有效桌面的环境,如使用登录用户而不是NT服务。 –
如果您使用Imagemagick保存为jpg格式,则可以使用jpg提示来加速该过程或尝试使用Imagick。 GDI +只能在Windows服务器上使用吗? – Bonzo
猜测,但我使用IIS7和.Net无论如何。 –