一尘不染

使用C#进行高质量的JPEG压缩

c#

我正在使用C#,并希望使用JPEG格式保存图像。但是,.NET会降低图像质量,并通过不够的压缩来保存图像。

我要保存文件的原始质量和大小。我正在使用以下代码,但是压缩和质量与原始代码不同。

Bitmap bm = (Bitmap)Image.FromFile(FilePath); 
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); 
ImageCodecInfo ici = null;

foreach (ImageCodecInfo codec in codecs)
{ 
    if (codec.MimeType == "image/jpeg") 
    ici = codec; 
}

EncoderParameters ep = new EncoderParameters(); 
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)100); 
bm.Save("C:\\quality" + x.ToString() + ".jpg", ici, ep);

我正在存档工作室照片,质量和压缩率非常重要。谢谢。


阅读 436

收藏
2020-05-19

共1个答案

一尘不染

您好像将质量设置为100%。这意味着将没有压缩。

如果更改了压缩级别(80、50等),但对质量不满意,则可能要尝试使用其他图像库。LEADTools具有良好的引擎(非免费)。

更新:如评论员所述,使用JPEG时100%的质量仍然并不意味着无损压缩。加载图像,对其进行处理,然后再次保存,最终将导致图像质量下降。如果您需要更改和保存图像而不丢失任何数据,则需要使用无损格式,例如TIFF,PNG或BMP。我会使用压缩的TIFF(因为即使压缩也仍然无损)或PNG。

2020-05-19