Преобразование нескольких команд Imagemagick в 1 команду (обрезка, изменение размера, квадрат) - PullRequest
0 голосов
/ 30 апреля 2018

В настоящее время я использую несколько команд imagemagick для обрезки, изменения размера (если ширина или высота> 5000) и квадрата. Можно ли объединить в одну команду?

шаг 1: конвертировать input_file.tif -фузз 1% -трим output_file_trim.tif

шаг 2: получить новые ширину и высоту изображения, используя команду идентификации из output_file_trim.tif

шаг 3: получить максимальный размер по ширине и высоте изображения

шаг 4: если максимальный размер> 5000, то
конвертировать output_file_trim.tif -размер 5000x5000 output_file_trim.tif

Шаг 5: Наконец, завершите преобразование изображения

конвертировать output_file_trim.tif -плоская -гравитационный центр -бэк фон белый -экстент "$ max_dimension" x "$ max_dimension" -формат jpg output_file_final.jpg

@fmw42. Является ли следующая единственная команда правильной для выполнения этого требования:

convert `input_file.tif` -fuzz 1% -trim +repage \( +clone -rotate 90 +clone -mosaic +level-colors white \) +swap -flatten -gravity center -extent 105x105% -composite -format jpg `output_file_final.jpg`


Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Эта команда прочитает входное изображение и обрежет его. Затем он изменяет размеры, чтобы поместиться в коробку 5000x5000, если она больше 5000x5000. Затем он изменяет размеры холста на квадрат, причем оба размера больше ширины или высоты. Он заканчивается размещением изображения в центре этого квадратного холста на белом фоне.

convert input_file.tif -fuzz 1% -trim +repage -resize "5000x5000>" \
   -set option:distort:viewport "%[fx:max(w,h)]x%[fx:max(w,h)]" -virtual-pixel white \
   -distort affine "0,0 %[fx:h>w?(h-w)/2:0],%[fx:w>h?(w-h)/2:0]" \
   output_file_final.jpg
0 голосов
/ 30 апреля 2018

Объединение 5 шагов в одну команду может быть выполнено только в IM 7 следующим образом (синтаксис Unix):

magick -quiet input_file.tif -fuzz 1% -trim +repage \
-resize "5000>" \
-flatten -gravity center -background white \
-extent "%[fx:max(w,h)>5000?5000:max(w,h)]x%[fx:max(w,h)>5000?5000:max(w,h)]" \
output_file_final.jpg

В IM 6 вам нужно сделать это двумя командами. Сначала найдите большее из max (w, h) и 500 как тусклое и сохраните временное изображение из первого шага. Затем выполните другую команду, чтобы завершить его, используя ту дим

dim=$(convert -quiet input_file.tif -fuzz 1% -trim +repage \
+write output_file_final.jpg -format "%[fx:max(w,h)>5000?5000:max(w,h)]" info:)

convert output_file_final.jpg -resize "5000>" \
-flatten -gravity center -background white \
-extent ${dim}x${dim} output_file_final.jpg

Я не понимаю вашу последнюю команду. Это не относится к описанным вами шагам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...