我有一个显示一些图像的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(请点击链接,我没有足够的声誉来发布图片)。
任何人都可以帮助我。非常感谢。
答案 0 :(得分:0)
将以下内容添加到Graphics
设置中。
g.CompositingQuality = CompositingQuality.HighQuality;
我认为你的两台机器之间的CompositingQuality.Default
可能不同。
答案 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);
现在一切正常。