У меня есть цифровая камера пушки, и я установил ее для съемки с превосходным качеством, и она выводит файл .jpg размером 3 мегабайта. Если я загружу его так, как в ASP.NET(это полезно, чтобы изменить его разрешение dpi или обрезать его или whaterver)
imgPicture = Image.FromFile(Config.WorkDirectory + this.TempPhotoName);
bmpPicture = new Bitmap(imgPicture);
а затем снова сохраните его следующим образом:
bmpModified.Save(Config.WorkDirectory + this.TempPhotoName,System.Drawing.Imaging.ImageFormat.Jpeg);
он выводит jpg, размер которого составляет всего 700 КБ. Потеря качества.
Я также попытался сохранить его так:
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);
Таким образом, размер (и я подозреваю, что качество) поддерживается, но я ввожу качество вручную.
Я хочу спросить:
Есть ли способ сохранить изображение с тем же качеством, которое было загружено без жесткого кодирования качества?
Заранее благодарю