.NET Antialias无法在服务器上运行

时间:2014-02-17 16:09:58

标签: asp.net bitmap gdi system.drawing antialiasing

我有一个显示一些图像的ASP.NET Web应用程序。对于缩略图显示,我必须调整它们的大小。这是我的代码:

        var newImage = new Bitmap(sourceImage, width, height);
        var g = Graphics.FromImage(newImage);
        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.PixelOffsetMode = PixelOffsetMode.HighQuality;
        g.DrawImage(newImage, 0, 0, newImage.Width, newImage.Height);
        newImage.Save(path,GetEncoder(ImageFormat.Jpeg), myEncoderParameters);

如果我在LOCALHOST中运行,一切看起来都不错。但是,当我在服务器上发布时,图像质量非常差并且已损坏 作为Microsoft文档(http://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode%28v=vs.110%29.aspx),System.Drawing命名空间不支持某些平台,但似乎不是我的情况(我不太确定)。
这是我的服务器系统规范: http://i.stack.imgur.com/ByVZ1.jpg(请点击链接,我没有足够的声誉来发布图片)。

任何人都可以帮助我。非常感谢。

2 个答案:

答案 0 :(得分:0)

将以下内容添加到Graphics设置中。

g.CompositingQuality = CompositingQuality.HighQuality;

我认为你的两台机器之间的CompositingQuality.Default可能不同。

Graphics.CompositingQuality Documentation

答案 1 :(得分:0)

我自己得到了答案。问题是我打电话

g.DrawImage(newImage, 0, 0, newImage.Width, newImage.Height);

它会将调整大小的图像绘制成自身,即对象:

 new Bitmap(sourceImage, width, height)); 

因此图形对象的所有设置都不会受到影响。调整大小实际上在上面的代码行中运行。 正确的解决方案应该是:

g.DrawImage(sourceImage, 0, 0, newImage.Width, newImage.Height);

现在一切正常。