我有一台佳能数码相机,将其设置为以超精细质量拍摄,并输出大小为3兆的.jpg文件。如果我在ASP.NET中这样加载它(这对于更改其dpi分辨率、裁剪或其他操作很有用)。
imgPicture = Image.FromFile(Config.WorkDirectory + this.TempPhotoName);
bmpPicture = new Bitmap(imgPicture);
然后我像这样再次保存它:
bmpModified.Save(Config.WorkDirectory + this.TempPhotoName,System.Drawing.Imaging.ImageFormat.Jpeg);
它输出的JPG文件大小仅为约700KB左右。存在一定的质量损失。
我也尝试过以下方式保存:
bmpPicture.Save(Config.WorkDirectory + this.TempPhotoName, codecJpeg, encparams);
codecJpeg是什么
ImageCodecInfo codecJpeg = this.getEncoderInfo("image/jpeg");
private ImageCodecInfo getEncoderInfo(string mimeType)
{
// Get image codecs for all image formats
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
// Find the correct image codec
for (int i = 0; i < codecs.Length; i++)
if (codecs[i].MimeType == mimeType)
return codecs[i];
return null;
}
以及encparams:
EncoderParameters encparams = new EncoderParameters(1);
encparams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 97L);
通过这种方式,尺寸(我猜品质也是如此)得到保持,但是我手动输入了品质。
我想问:
有没有一种方法可以在不硬编码品质值的情况下保存与加载时相同品质的图像?
提前感谢您。