我使用以下代码以不同的格式保存图像
public void saveJpeg(string path, Bitmap img, long quality)
{
System.Drawing.Imaging.EncoderParameter qualityParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
System.Drawing.Imaging.ImageCodecInfo Codec = this.getEncoderInfo(imgformat);
if (Codec == null)
return;
System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
img.Save(path + ext, Codec, encoderParams);
}
质量设置在JPEG图像的情况下工作正常。但是当我为.bmp和.png格式设置质量为20和100时,我得到的文件大小与输出相同。 这里出了什么问题? 请指教。
答案 0 :(得分:1)
“这里出了什么问题?”
这里没有什么问题。质量设置仅适用于JPEG编码器。 PNG和BMP都是无损的,这意味着不需要进行质量/空间权衡。您将始终从这些格式中获得完全相同的像素。
不幸的是,.NET在任何图像处理API中都没有为这些格式提供压缩选项。 BMP确实支持“游程编码”格式,但据我所知,没有实际生成它的.NET API。同样是PNG,它实际上有很多选项可供选择,以根据输入图像的性质和压缩文件所需的时间量来定制压缩。
但即使您有权访问这些选项,它们也不会影响图像的质量。只是文件的最终压缩大小(例如,对于使用正确压缩算法的PNG和/或花费更多时间压缩文件将导致文件较小,但仍然是与您开始使用的图像完全相同的文件)。