Я следовал этому примеру http://cubiq.org/create-fixed-size-thumbnails-with-imagemagick, и это именно то, что я хочу сделать с изображением, за исключением наличия остатков фона (то есть белого границы). Есть ли способ сделать это и, возможно, вырезать белый фон? Есть ли другой способ сделать это? Повторный размер должен быть пропорционален, поэтому я не просто хочу установить ограничение размера или ширины ширины ширины, но пропорционально изменить размер изображения.
ImageMagick: как изменить размер пропорционально mogrify без фона
Ответ 1
В примере, к которому вы ссылаетесь, используется эта команда:
mogrify \
-resize 80x80 \
-background white \
-gravity center \
-extent 80x80 \
-format jpg \
-quality 75 \
-path thumbs \
*.jpg
Во-первых, mogrify
является немного опасным. Он управляет вашими оригиналами inline и перезаписывает оригиналы. Если что-то пойдет не так, вы потеряли свои оригиналы и застряли в неудачных результатах. В вашем случае -path thumbs
, тем не менее, устраняет эту опасность, потому что гарантирует, что результаты будут записаны в палитре подкаталогов
Другая команда ImageMagick, convert
, может хранить ваши оригиналы и выполнять те же манипуляции, что и mogrify
:
convert \
input.jpg \
-resize 80x80 \
-background white \
-gravity center \
-extent 80x80 \
-quality 75 \
thumbs/output.jpg
Если требуется тот же результат, но только не белые холст-расширения (изначально добавленные, чтобы сделать результат квадратным изображением 80x80), просто оставьте параметр -extent 80x80
(-background white
и gravity center
тоже излишни):
convert \
input.jpg \
-resize 80x80 \
-quality 75 \
thumbs/output.jpg
или
mogrify \
-resize 80x80 \
-format jpg \
-quality 75 \
-path thumbs \
*.jpg
Ответ 2
Я знаю, что это старый поток, но с помощью флага -write с флагом -set можно записывать файлы в том же каталоге, не перезаписывая исходные файлы:
mogrify -resize 80x80 \
-set filename:name "%t_small.%e" \
-write "%[filename:name]" \
*.jpg
Как указано в http://imagemagick.org/script/escape.php,% t - это имя файла без расширения, а% e - расширение. Таким образом, вывод изображения .jpg будет thumbnail image_small.jpg.
Ответ 3
Это команда, которую я использую каждый раз, когда я хочу пакетно изменить размер до 1920x и сохранить соотношение сторон.
mogrify -path. -resize 1920x1920 -format "_resized.jpg" -quality 70 *.jpg