我有一个大炮数码相机,我将它设置为以超精细质量拍照,它会输出一个 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);
它输出一个大小只有 700KB 左右的 jpg。有质量损失。
我也尝试像这样保存它:
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;
}
和封装:
EncoderParameters encparams = new EncoderParameters(1);
encparams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 97L);
这样可以保持尺寸(我也怀疑质量),但我是手动输入质量的。
我想问一下:
有没有办法在不硬编码质量值的情况下以与加载时相同的质量保存图像?
先感谢您