Я написал небольшой метод для получения этой информации в моем собственном коде:
private static ImageCodecInfo GetEncoderInfo(string mimeType)
{
foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders())
if (codec.MimeType == mimeType)
return codec;
return null;
}
И вот как я использую его для сохранения Jpeg:
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
if (jpegCodec == null)
return;
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, quality);
image.Save(imagePath, jpegCodec, encoderParameters);
Не используется чтобы сохранить Png:
image.Save(imagePath, ImageFormat.Png);
Вам понадобятся следующие пространства имен:
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
Кроме того, я должен упомянуть, что Png - это формат изображения без потерь. Вот почему для него нет параметров кодировщика, потому что вы не можете добиться лучшего качества, чем без потерь.
Для максимального качества при работе с классом Graphics
убедитесь, что вы установили следующие свойства:
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;