2

В настоящее время я использую mogrify -strip image.jpg для удаления нежелательных байтов из изображений. Было предложено удалить дополнительные данные, используя jpegran из libjpeg , что-то вроде:

jpegtran -copy none -optimize -outfile image.jpg image.jpg

Проблема, с которой я столкнулся - если это вообще проблема - в том, что jpegtran , похоже, на самом деле не делает ничего такого, чего не делает mogrify. Во всех моих тестах размер файла остается неизменным. Если я удаляю mogrify часть моего кода и заменяю на jpegtran то, похоже, он выполняет ту же функцию.

Например:

  • изображение без сжатия: 300 КБ
  • изображение с помощью mogrify -strip + jpegtran: 272k
  • изображение только с mogrify -strip: 272k
  • изображение только в формате jpegtran: 272 тыс.

Хотя у меня сложилось впечатление, что mogrify просто удалил профили / комментарии к изображениям и что jpegtran сделал это, а также сжал изображение без потерь, чтобы сделать его меньше. Я что-то пропустил?

1 ответ1

3

Википедия говорит, что jpegtran "оптимизирует уровень кодирования Хаффмана", удаляет дополнительные данные, специфичные для приложения (что mogrify -strip ), и конвертирует между прогрессивным и непрогрессивным форматами jpeg. Он также имеет возможность обрезать, вращать / переворачивать и преобразовывать в оттенки серого без распаковки и повторного сжатия изображения.

Я предполагаю, что если слой кодирования Хаффмана уже находится в своем оптимальном состоянии, jpegtran не может работать лучше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .