Я пытаюсь сохранить изображение в формате JPEG с помощью класса Bitmap. Я заметил, что острые края всегда были размытыми, независимо от уровня качества, который я указал. Я понял, что это связано с подвыборкой одного или нескольких каналов. Как отключить субсэмплинг при сохранении изображения?
Я сейчас использую этот код:
EncoderParameters parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(Encoder.Quality, 85L);
ImageCodecInfo codec = GetEncoderInfo("image/jpeg");
image.Save(path, codec, parameters);
Примечание
Я знаю, что JPEG с потерями, но это не проблема здесь. Если я использую ImageMagick и сохраняю изображение с параметрами по умолчанию, я получаю аналогичные результаты. Однако если указать субдискретизацию 1: 1: 1, размытие исчезнет.
Я не хочу использовать PNG, потому что мне нужно лучшее сжатие. Если я сохраню изображение как BMP, а затем преобразую его вручную в JPEG, я получу отличные результаты без размытия. Таким образом, формат не является проблемой здесь.