ImageMagick: масштабировать изображение JPEG с максимальным размером файла
У меня есть несколько изображений в формате JPEG, которые я хотел бы уменьшить. Другое требование заключается в том, что размер файла не должен превышать 300 КБ.
Это возможно, пожалуйста, помогите мне с примером =)
2 ответа
Чтобы ограничить полученное изображение максимальным размером файла, вы можете использовать параметр командной строки -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 КБ.
(Обновление / уточнение: Размер выходного файла может быть немного меньше или больше, чем запрашиваемый размер файла.)
Инструмент 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), затем уменьшайте размер файла. Если вы не можете добраться до нужного диапазона размеров файла, выберите меньшие целевые размеры и перезапустите (из исходного изображения, а не из того, которое вы уменьшили в первую очередь).