我只是加载 JPEG 图像并保存它,而不对其进行任何操作。但图像质量明显下降。
这是代码:
Bitmap imgOutput = new Bitmap(@"D:\image.jpg");
Graphics outputGraphics = Graphics.FromImage(imgOutput);
EncoderParameters myEncoderParameters = new EncoderParameters(3);
myEncoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.ScanMethod, (int)EncoderValue.ScanMethodInterlaced);
myEncoderParameters.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.RenderMethod, (int)EncoderValue.RenderProgressive);
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo codec in codecs)
{
if (codec.MimeType == "image/jpeg")
ici = codec;
}
imgOutput.Save(@"D:\result.jpg", ici, myEncoderParameters);
我得到了什么:https://i.stack.imgur.com/4KLHV.jpg https://i.stack.imgur.com/4KLHV.jpg zoom: https://i.stack.imgur.com/zm8t9.jpg https://i.stack.imgur.com/zm8t9.jpg
还有其他图像质量设置吗?
JPEG 是一种有损格式,每次保存都会造成损失。它在压缩锋利边缘方面也特别糟糕。根据这篇 MSDN 文章 http://msdn.microsoft.com/en-us/library/bb882583.aspx,您正确设置了图像质量。如果您想尝试优化图像质量,您可以使用其他设置,因为我不知道您是如何想出 ScanMethod 和 RenderMethod 的。然而,我认为最好的方法是使用无损格式(PNG、TIFF 等)。
Update
看来这是由于 GDI+ JPEG 编码器不良造成的。更多关于它的内容MSDN 论坛 http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/ed3e9f13-2290-40c7-9284-d280430ac6cb。结论是 - 使用第三方图像库,那里有很多免费的图像库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)