ImageMagick: как изменить размер пропорционально mogrify без фона

Я следовал этому примеру http://cubiq.org/create-fixed-size-thumbnails-with-imagemagick, и это именно то, что я хочу сделать с изображением, за исключением наличия остатков фона (то есть белого границы). Есть ли способ сделать это и, возможно, вырезать белый фон? Есть ли другой способ сделать это? Повторный размер должен быть пропорционален, поэтому я не просто хочу установить ограничение размера или ширины ширины ширины, но пропорционально изменить размер изображения.

Ответы

Ответ 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