Я просто загружаю изображение в формате JPEG и сохраняю его без каких-либо манипуляций с ним. Но качество изображения заметно уменьшается.C#: снижение качества изображения при сохранении JPEG при 100% -ном качестве
Вот код:
Bitmap imgOutput = new Bitmap(@"D:\image.jpg");
Graphics outputGraphics = Graphics.FromImage(imgOutput);
EncoderParameters myEncoderParameters = new EncoderParameters(3);
myEncoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.ScanMethod, (int)EncoderValue.ScanMethodInterlaced);
myEncoderParameters.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.RenderMethod, (int)EncoderValue.RenderProgressive);
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo codec in codecs)
{
if (codec.MimeType == "image/jpeg")
ici = codec;
}
imgOutput.Save(@"D:\result.jpg", ici, myEncoderParameters);
И что я получаю: http://i.imgur.com/5bG1tPM.jpg зум: http://i.imgur.com/vdx8sL5.jpg
Есть еще настройки качества изображения?
Да, PNG экономит деньги. Но, несмотря на то, что JPEG имеет формат с потерями, когда я открываю изображение в Photoshop, а затем сохраняю его как JPEG, результат изображения безупречен (и даже с меньшим размером файла). Это означает, что формат JPEG позволяет сохранять изображения более корректно. И я хотел бы знать, как) – user1032559
@ user1032559 Кажется, что GDI + это плохо. См. Обновление и ссылку. –
Я просмотрел исходный код этого инструмента - http://www.codeproject.com/Articles/9727/Image-Processing-Lab-in-C Он сохраняет изображения стандартными методами и работает хорошо. Единственное отличие состоит в том, что они не используют EncoderParameters. Но когда я сохраняю изображение без этих параметров, общее качество JPEG очень низкое. – user1032559