我正在为我的Asp.net应用程序生成一些PNG图表。使用PNG,我达到了我在网站上所需的质量,但我还需要生成一份报告,因为我必须将我的图表从897x651调整为216x161。如何在不损失太多质量的情况下实现这一目标。我试过了:
我对两种方式都不满意。请有人帮帮我吗?使用PNGout,您可以将bmp转换为png而不会降低质量。但你无法调整大小
答案 0 :(得分:0)
实际上,我在使用System.Drawing类调整内容时遇到了同样的问题。
Graphics类(这也用于您发布的链接http://www.peterprovost.org/blog/post/Resize-Image-in-C.aspx)具有属性SmoothingMode和InterpolationMode。我把它们设置为:
var graphics = Graphics.CreateFromImage( ... );
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.InterpolationMode = InterpolationMode.High;
这大大提高了质量(虽然在大图像上有性能损失),但到目前为止我只用JPG尝试过。
老实说,我很快就在我的ASP.NET应用程序中抛弃了System.Drawing并使用了imagemagick(http://www.imagemagick.org/)来处理图形内容。
答案 1 :(得分:0)
不丢失质量的绝对最佳方法(如果您要生成原始图像)是从头开始生成图像,但尺寸较小。
否则.NET中内置的图像缩放功能不仅适用于PNG图像。 - 请参阅上面Marek评论中的链接。