Подтвердить что ты не робот

ImageMagick: масштабирование изображения в формате JPEG с максимальным размером файла

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

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

4b9b3361

Ответ 1

Чтобы ограничить результирующее изображение до максимального размера файла, вы можете использовать параметр командной строки -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 КБ.


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

Ответ 2

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

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

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

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

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

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