Можем ли мы изменить размер изображения JPEG без декодирования и перекодирования?

Я хочу преобразовать изображение 640x480 JPEG в 320x240. Я знаю, что это можно сделать, декодируя изображение JPEG в raw YCbCr, масштабируя его и перекодируя в JPEG. Но возможно ли с помощью кодирования JPEG напрямую масштабировать изображение без декодирования?

14
задан Jens Erat
03.05.2023 19:45 Количество просмотров материала 3699
Распечатать страницу

2 ответа

вы можете, но только если ваш просмотрщик JPEG поддерживает SmartScale расширение JPEG. jpegtran может сделать это для размеров N / 8, С N=1..16. В принципе, размер блока DCT изменяется с 8x8 на что-то другое во время рекомпрессии (например, 4x4), что эффективно масштабирует изображение.

Примечание: SmartScale был представлен в версия 8 библиотеки libjpeg, но она не широко поддерживается зрителями.

документ, описывающий изменения подробно можно посмотреть здесь:эволюция JPEG.

изменить: похоже, что большинство зрителей не могут отобразить эти изображения, так как они основаны на libjpeg-turbo. А libjpeg-turbo решил не реализовывать эту функцию. На самом деле, я пробовал довольно много программ (на Ubuntu 14.04 и Windows 8), и никто не смог отобразить уменьшенное изображение, созданное с помощью jpegtrans. Даже Photoshop, IrfanView и GIMP неудачный.

EDIT 2: на самом деле Ubuntu и Fedora даже не поставляют библиотеку libjpeg8, а полностью заменяют ее версией libjpeg-turbo. Таким образом, ни одна из программ не сможет читать файлы JPEG SmartScale, за исключением нескольких двоичных файлов, которые статически связаны с оригинальной библиотекой libjpeg8.

14
отвечен jmiserez 2023-05-05 03:33

короткий ответ: нет. Изображение JPEG использует сжатие, что означает, что каждый выходной байт зависит от всех остальных. При изменении числа байтов образа необходимо выполнить распаковку и повторное сжатие.

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

Если вы много работаете с изображениями, лучше всего работать в формате сжатия без потерь, таком как PNG, конвертируя в JPEG только после завершения изображений, при условии, конечно, что у вас есть дополнительное пространство на диске.

3
отвечен AFH 2023-05-05 05:50

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх