c#:以100%质量保存JPEG时降低图像质量

时间:2013-05-04 11:10:01

标签: image save jpeg

我只是加载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

是否有其他图像质量设置?

1 个答案:

答案 0 :(得分:4)

JPEG,作为有损格式会在每次保存时引入损失。压缩锋利边缘也特别糟糕。根据{{​​3}},您正确设置图像质量。如果您想尝试优化图像质量,可以使用其他设置,因为我不知道您是如何想出ScanMethod和RenderMethod的。但是,我认为最好的方法是使用无损格式(PNG,TIFF等)。

<强>更新

这似乎是由于糟糕的GDI + JPEG编码器造成的。有关this MSDN article的更多信息。结论是 - 使用第三方成像库,那里有很多免费的。