Как обрабатывать несколько элементов с помощью imagemagick cli?

#imagemagick #imagemagick-convert

#imagemagick #imagemagick-конвертировать

Вопрос:

Нам нужно поместить информационные панели в тысячи файлов изображений. Примерно неделю или около того я пытаюсь изучить imagemagick, но я просто не мог разобраться в таком количестве элементов, поэтому я хотел попросить помощи здесь.

Я понимаю идею добавления элементов ‘- / ‘ и переключения между ними, но когда дело доходит до ячеек матрицы 3×3 и микширования текста и изображений, я просто не могу этого сделать. В качестве примера, я могу добавить 3 строки и столбец рядом с ними, но я не могу перейти к следующему шагу «добавить еще 2 строки вместе, а затем снова поместить их в виде блока столбцов», потому что, когда я пытаюсь, все эти добавления становятся правыми или нижними как целое изображение.. Что ж, вы поймете это, когда увидите мое краткое изображение ниже..

 magick.exe -size 150x100 -gravity center caption:"txt2" caption:"txt3" caption:"txt4" 
 -append -size 94x294 xc:white -border 3 -swap 0,1 
  append outoutout.jpg
 

К вашему сведению, высота / ширина строк / столбцов есть только для примера, не важно.. И здесь появляются навыки MSPaint:
Идея конечного результата

Ответ №1:

Вы должны создавать каждый раздел отдельно, используя обработку скобок. Затем, если вы хотите, добавьте их соответствующим образом. Кроме того, вы можете создать фоновое изображение и создать композицию … -составьте каждое изображение в нужное место.

Вот пример в ImageMagick, использующий второй метод.

Синтаксис Unix:

 magick -size 400x400 xc:white 
( barn.jpg -crop 400x200 0 0  repage ) 
    -geometry  0 0 -compose over -composite 
( -size 100x200 xc:white -shave 5x5 -bordercolor black -border 5 ) 
    -gravity northwest -geometry  0 200 -compose over -composite 
( -size 100x200 -background white -gravity center -fill black 
    -font Candice label:"Text1nnText2nnText3" ) 
    -gravity northwest -geometry  100 200 -compose over -composite 
( -size 100x200 -background skyblue -gravity center -fill red 
    -font Arial label:"First_linennnSecond_line" ) 
    -gravity northwest -geometry  300 200 -compose over -composite 
result.png
 

введите описание изображения здесь

Смотрите, например:

обработка скобок

добавление

преобразовать… -композитный

Комментарии:

1. Это отличное решение, спасибо. С помощью ‘-geometry’ я буду управлять каждым элементом, чтобы он решал все. Всего 1 небольшой быстрый вопрос, есть ли какое-либо предложение if в imagemagick? Например, «если основное изображение (barn.jpg в вашем примере) ширина <1000 пикселей, затем измените размер на barn.jpg ширина или просто ничего не делайте.. Еще выполните эту команду и т.д.. (Это не так важно, я просто хочу посмотреть, насколько более мощным может быть imagemagick ..)

2. В командной строке нет конкретной команды if. Однако с IM 7 вы можете выполнять вычисления условий. Также есть флаги для изменения размера и изображения, если оно больше (или меньше), чем некоторый указанный размер. Смотрите imagemagick.org/script/command-line-processing.php#geometry