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

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

3 ответов


пример, на который вы ссылаетесь, использует эту команду:

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), просто оставьте (том -background white и gravity center лишние тоже):

convert             \
   input.jpg        \
  -resize 80x80     \
  -quality 75       \
   thumbs/output.jpg

или

mogrify             \
  -resize 80x80     \
  -format jpg       \
  -quality 75       \
  -path thumbs      \
   *.jpg

Я знаю, что это старый поток, но с помощью флага-write с флагом-set можно писать в файлы в том же каталоге без перезаписи исходных файлов:

mogrify -resize 80x80 \
-set filename:name "%t_small.%e" \
-write "%[filename:name]" \
*.jpg

Как отмечено в http://imagemagick.org/script/escape.php, %t-имя файла без расширения, %e-расширение. Итак, вывод изображения.jpg будет миниатюрой image_small.формат jpg.


Это команда, которую я использую каждый раз, когда хочу изменить размер пакета до 1920x и сохранить соотношение сторон.

однако существует -путь . - изменить размер 1920x1920-формат " _resized.jpg " - качество 70 *.формат JPG