我只是加载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);
我得到了什么:http://i.imgur.com/5bG1tPM.jpg zoom:http://i.imgur.com/vdx8sL5.jpg
是否有其他图像质量设置?
答案 0 :(得分:4)
JPEG,作为有损格式会在每次保存时引入损失。压缩锋利边缘也特别糟糕。根据{{3}},您正确设置图像质量。如果您想尝试优化图像质量,可以使用其他设置,因为我不知道您是如何想出ScanMethod和RenderMethod的。但是,我认为最好的方法是使用无损格式(PNG,TIFF等)。
<强>更新强>
这似乎是由于糟糕的GDI + JPEG编码器造成的。有关this MSDN article的更多信息。结论是 - 使用第三方成像库,那里有很多免费的。