ImageMagick: масштабировать изображение JPEG с максимальным размером файла - PullRequest
48 голосов
/ 02 августа 2011

У меня есть несколько изображений в формате JPEG, которые я хотел бы уменьшить.Другое требование заключается в том, что размер файла не должен превышать, скажем, 300 КБ.

Возможно ли это, пожалуйста, помогите мне с примером =)

Ответы [ 2 ]

74 голосов
/ 12 августа 2012

Чтобы ограничить полученное изображение максимальным размером файла, вы можете использовать параметр командной строки -define jpeg:extent=max_value, например:

convert original.jpeg -define jpeg:extent=300kb output.jpg
convert original.jpeg -define jpeg:extent=300kb -scale 50% output.jpg
convert original.jpeg -define jpeg:extent=300kb [...other options...] output.jpg

Обратите внимание, что это не всегда будет работать, чтобы соответствовать точному размеру, который вы хотели. Возможно, вы запросили размер выходного файла 40 КБ, где входное значение составляет 300 КБ, и в результате получили 48 КБ.


( Обновление / уточнение: Размер выходного файла может быть немного меньше или больше, чем запрашиваемый размер файла.)

11 голосов
/ 18 августа 2014

Инструмент jpegoptim ( фактическая домашняя страница для нескольких программ) работает для меня лучше:

jpegoptim -s -S8 *.JPG
  • -s означает убрать всеметаданные (EXIF, JFIF, XMP и т. д.)
  • -S8 означает нацеливание на размер файла около 8 КиБ

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

jpegoptim -s --all-progressive -S8 *.JPG; jpegoptim -s --all-normal -S8 *.JPG

jpegoptim обычно отказывается писать изображение, которое увеличивает размер, поэтому это даст вам оптимальное качество / размер.

Какдля части размеров изображения: обычно вы сначала определяете размер цели в терминах размеров и масштабируете там, только затем вы определяете целевой размер file .Это связано с тем, что при его отображении в идеале необходимо, чтобы размеры изображения были целым кратным или дробным от конечных размеров дисплея, чтобы сделать масштабирование более простым или даже ненужным.Итак, сначала масштабируйте до целевых размеров (с качеством 100 и, возможно, другими вещами, такими как цветность 4: 4: 4, и, скорее всего, с помощью dct float), затем уменьшайте размер файла.Если вы не можете добраться до нужного диапазона размеров файла, выберите меньшие целевые размеры и перезапустите (из исходного изображения, а не из того, которое вы уменьшили в первую очередь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...