Изменение размера JPEG без потери качества - PullRequest
0 голосов
/ 07 сентября 2011

Я пытаюсь работать в небольшом веб-редакторе изображений с .NET. У меня возникла проблема с изменением размера изображения JPEG. Как я понимаю, нет способа манипулировать JPEG без потери качества, и я считаю, что это единственный способ сделать это. Изменение размера изображения в asp.net без потери качества изображения . В этом примере целевое изображение сохраняется в формате PNG.

Итак, что я хочу сделать, это
1. Когда пользователь загружает изображение, сохраните его как PNG
2. Манипулировать, как изменить размер, повернуть и т. Д.
3. Сохраните его в формате JPEG

Если я сохраню этот png в формате jpeg, это качество тоже потеряет? Или это должно быть хорошо, так как он просто сохраняет его в другом формате и не манипулирует им.

Спасибо.

Ответы [ 3 ]

1 голос
/ 07 сентября 2011

Формат PNG - это формат без потерь, поэтому, пока вы создаете PNG с исходным изображением, все в порядке.

Для справки:

JPEG - потеря для большинства спецификаций (новая спецификация также имеет формат без потерь, но пока еще не многие библиотеки поддерживают его).

PNG - без потерь

TIFF - без потерь (кодировка RLE)

BMP - без потерь (кодировка RAW)

1 голос
/ 07 сентября 2011

Да, он также потеряет качество. Сложность изменения размера JPEG связана с самим алгоритмом сжатия (он же кодирование), поэтому не имеет значения, какой формат изображения является источником, потому что для кодирования изображения сначала необходимо декодировать его в необработанный формат (то есть растровое изображение).

Кроме того, хорошо помнить, что если кодируемое изображение ранее было в формате JPEG, кодировщику будет труднее кодировать его снова после изменения размера. JPEG делит изображение на блоки 8x8 пикселей для выполнения кодирования, а изменение размера перемещает границы этих блоков. Это важное примечание, поскольку при более высоких степенях сжатия границы между блоками становятся более четкими - а JPEG особенно плохо кодирует нерегулярные острые края изображения (я пропускаю все внутренние детали, сейчас они не важны, прокомментируйте, если ты бы все равно хотел их знать). Однако этот эффект не важен для типичных коэффициентов сжатия фотографий.

По сути: если вы кодируете изображение в формате JPEG, вам придется кодировать его хотя бы один раз (очевидно, не так ли?;)). А кодирование JPEG (то есть с потерями) равняется потере качества.

1 голос
/ 07 сентября 2011

Если вы не хотите терять качество, не используйте JPEG.Что плохого в том, чтобы просто держать это png?Когда вы сохраняете png как jpeg, вы теряете качество в зависимости от выбранной вами степени сжатия.Такова природа формата JPEG.

...