Объедините 3 изображения в одну команду преобразования, поддерживающую размер ImageMagick - PullRequest
0 голосов
/ 16 ноября 2018

Используя эти 3 отдельных кода, я создаю следующие 3 изображения с желаемым размером для каждого. Я не могу объединиться в одну команду.

Этот код выдает P1.png

convert \( \( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 1" \) \
           \( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 2" \) \
 +smush +2 -write P1.png \) null:

P1.png (854x37)

enter link description

Этот код производит P2.png

convert \( \( -size 881x488 xc:"#FFE97F"  \) \
           \( -size 881x488 xc:"#00FF90" \) \
            +smush +6 -resize 1180x441! -write P2.png \) null:

P2.png (1180x441)

enter link description

Этот код выдает P3.png

convert \( \( -size 1104x89! xc:"#00137F" -fill white -font Calibri-Bold -pointsize 48 -gravity center -annotate +0+0 "Different boxes" \) \
-write P3.png  \) null:

P3.png (1104x89)

enter link description

Если я визуально соединю 3 изображения в редакторе изображений (например, Paint.net), полученное изображение будет иметь размер 1180x606 и разрешение 96 пикселей на дюйм.

Как я могу объединить эти 3 команды в одну команду "конвертировать", чтобы конечный образ имел размер 1180x606?

Я пробовал с этим кодом, но я не знаю, как правильно построить команду

convert \ 
\( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 1" \) \
\( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 2" \) \
+smush +2 \ 
-write mpr:numbers \ 
\
\( 
\( -size 881x488 xc:"#FFE97F" \) \
\( -size 881x488 xc:"#00FF90" \) \ 
-resize 1180x441! +smush +6 mpr:numbers +swap -gravity center -smush +15 +gravity \ 
-write mpr:boxes \ 
-delete 0 \ 
\ 
\( -size 1104x89! xc:"#00137F" -fill white -font Calibri-Bold -pointsize 48 -gravity center -annotate +0+0 "Different boxes" \) \ 
mpr:boxes +swap -gravity center -smush +24 +gravity +write POut.png \) null:

Требуемый вывод выглядит так:

enter link description

Спасибо за любую помощь.

UPDATE

Когда я вижу его в графическом редакторе (в моем случае Paint.net), я могу видеть и изменять разрешение без изменения размеров в пикселях. Меняются только размеры в дюймах.

Result.png оригинал с разрешением = 120 пикселей / дюйм и размером 1180x606

enter link description

Result.png изменен на Разрешение = 96 пикселей / дюйм, а размер по-прежнему составляет 1180x606, но размеры в дюймах изменены

enter link description

ОБНОВЛЕНИЕ 2

Код fmw42 прекрасно работает, создавая с нуля 3 изображения, а затем объединяя их. Моя проблема, если я использую тот же скрипт fmw42, но вместо этого, чтобы создать желтые и зеленые прямоугольники, которые я обрезаю из другого изображения (source.png), result.png не совпадает. В чем проблема при добавлении обрезанных изображений?

Я использую этот код:

convert \
source.png +repage -write mpr:img -delete 0--1 \
\( \
\( -size 1104x89! xc:"#00137F" -fill white -font Calibri-Bold -pointsize 48 -gravity center -annotate +0+0 "Different boxes" \) \
\) \
\
\( \
\( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 1" \) \
\( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 2" \) \
+smush +2 \
\) \
-smush +24 \
\
\( \
\( mpr:img -crop 881x488+71+376   \) \
\( mpr:img -crop 881x488+992+376  \) \
+smush +6 -resize 1180x441! \
\) \
-smush +15  \
resultX.png

Это source.png

enter link description

И это неправильный вывод

enter link description

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

При хорошо продуманном использовании регистров памяти ImageMagick, таких как «mpr: что-то», вы можете упростить построение всего изображения до чего-то вроде этого ...

convert -gravity center -background white -font helvetica \
   -size 1104x89 xc:"#00137F" -fill white -pointsize 48 \
   -annotate +0+0 "Different boxes" -write mpr:diffbox +delete \
   -size 426x37 xc:"#4FA7FF" xc:"#4FA7FF" -fill black -pointsize 32 \
   -annotate +0+0 "Number %[fx:t+1]" +smush 2 -write mpr:numbox +delete \
   -size 588x441 xc:"#FFE97F" xc:"#00FF90" +smush 4 \
   mpr:numbox +insert -smush 15 mpr:diffbox +insert -smush 24 result.png

Это работает для меня в WindowsОболочка Ubuntu bash под управлением ImageMagick 6.8.9-9.Вам нужно будет указать свой собственный шрифт, и если вы используете один и тот же шрифт для всего, вам нужно будет указать его только один раз.

0 голосов
/ 16 ноября 2018

Делает ли это то, что вы хотите?Команда ImageMagick 6 может выглядеть следующим образом:

convert \( \( -size 1104x89! xc:"#00137F" -fill white -font Calibri-Bold -pointsize 48 -gravity center -annotate +0+0 "Different boxes" \) \
-write P3.png  \) \
\
\( \( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 1" \) \
\( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 2" \) \
+smush +2 -write P1.png \) \
-smush +24 \
\
\( \( -size 881x488 xc:"#FFE97F"  \) \
\( -size 881x488 xc:"#00FF90" \) \
+smush +6 -resize 1180x441! -write P2.png \) \
-smush +15 \
result.png


enter image description here

Обратите внимание, что я, возможно, не использовалтот же шрифт, что и у вас.

Пожалуйста, просмотрите:

https://imagemagick.org/Usage/basics/#parenthesis https://imagemagick.org/Usage/layers/#smush https://imagemagick.org/Usage/files/#write

Чтобы ответить на ваш вопрос по поводу Update2: Вам нужно повторно представить гравитацию с + гравитацией после того, как вы использовали ее с центром гравитации.Также вам нужно добавить + повторение после вашего урожая.

convert \
source.png +repage -write mpr:img -delete 0--1 \
\( \
\( -size 1104x89! xc:"#00137F" -fill white -font Calibri-Bold -pointsize 48 -gravity center -annotate +0+0 "Different boxes" \) \
\) \
\
\( \
\( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 1" \) \
\( -size 426x37 xc:"#4FA7FF" -fill black -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Number 2" \) \
+smush +2 \
\) \
-smush +24 +gravity \
\
\( \
\( mpr:img -crop 881x488+71+376 +repage \) \
\( mpr:img -crop 881x488+992+376 +repage \) \
+smush +6 -resize 1180x441! \
\) \
-gravity center -smush +15  \
resultX.png


enter image description here

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