Добавить текст заголовка в объединенные регионы ImageMagick - PullRequest
0 голосов
/ 31 октября 2018

Я обрезаю 2 области из исходного изображения, чтобы объединить их попарно, а затем добавляю заголовок с центром в верхней части, который говорит: «Левый правый» с красным фоном. Для этого у меня есть этот код, который использует источник input.png и LeftRight.png в качестве помощника.

Это Input.png

input.png

Это вспомогательное изображение, которое я использую для создания заголовка LeftRight.png

LeftRight.png

Код пока:

convert input.png \ 
-write mpr:img -delete 0--1 -background none -bordercolor black \ 
\( \( mpr:img -crop 240x151+462+176 \) \   ( mpr:img -crop 240x151+87+257  \) \ 
+smush +6 LeftRight.png +swap -gravity   center -smush +3 +gravity -write Img-A.png    \) -delete 0--1 \ 
\( \( mpr:img -crop 240x151+468+542 \) \( mpr:img -crop 240x151+140+624 \) \ 
+smush +6 LeftRight.png +swap -gravity center -smush +3 +gravity -write Img-B.png \) null:

Я генерирую эти 2 изображения с кодом:

Img-A.png

Img-B.png

Как можно изменить эту часть

+smush +6 LeftRight.png +swap -gravity center -smush +3 +gravity -write

для добавления текста заголовка "Left Rigth" с такими же характеристиками без использования вспомогательного изображения LeftRight.png ?

1 Ответ

0 голосов
/ 31 октября 2018

Вы должны сначала создать текстовое изображение в ImageMagick, а затем сохранить в mpr: для последующего использования. Смотрите мои 2-4 строки.

Обратите внимание, что ваш input.png изменен на JPG.

convert \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "LEFT" \) \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "RIGHT" \) \
-background white +smush +2 -write mpr:leftright +delete +gravity \
input.jpg +repage -write mpr:img -delete 0--1 -background none -bordercolor black \
\( \( mpr:img -crop 240x151+462+176 +repage -border 2 \) \( mpr:img -crop 240x151+87+257 +repage -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-A.png \) -delete 0--1 \
\( \( mpr:img -crop 240x151+468+542 +repage -border 2 \) \( mpr:img -crop 240x151+140+624 +repage -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-B.png \) null:


enter image description here

enter image description here

Ваш черный цвет -border здесь ничего не делает, так как вы не добавили -border x. Я включил границу 2, чтобы обвести рамку вокруг обрезанных изображений. Также ваш -delete 0--1 можно заменить здесь просто + delete, поскольку в этом примере создается только одно изображение.

Сложение:

Вы попросили изменить размеры изображений до 380x150. Вы можете сделать это следующим образом. Но обратите внимание, что аспект оригинальных обрезанных изображений отличается от формата 380x150. Таким образом, чтобы получить ровно 380x150 без потери данных при сохранении соотношения сторон или отступов, мне нужно исказить получающиеся обрезанные изображения, чтобы они точно соответствовали 380x150. Посмотрите, куда я положил - размер 380х150 !. "!" говорит ImageMagick искажать изображение, чтобы оно точно подходило к вашему 380x150

convert \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "LEFT" \) \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "RIGHT" \) \
-background white +smush +2 -write mpr:leftright +delete +gravity \
input.jpg +repage -write mpr:img -delete 0--1 -background none -bordercolor black \
\( \( mpr:img -crop 240x151+462+176 +repage -resize 380x150! -border 2 \) \( mpr:img -crop 240x151+87+257 +repage -resize 380x150! -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-A.png \) -delete 0--1 \
\( \( mpr:img -crop 240x151+468+542 +repage -resize 380x150! -border 2 \) \( mpr:img -crop 240x151+140+624 +repage -resize 380x150! -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-B.png \) null:


enter image description here

enter image description here

ДОПОЛНЕНИЕ 2:

Если вы хотите изменить размер добавленных пар обрезанных изображений, поместите изменение размера сразу после + smush 6, к которому добавляются два изображения. Обратите внимание, что результаты могут быть искажены, так как я заставил его соответствовать точному размеру. Если вы не хотите искажать изображение, вы должны указать, хотите ли вы, чтобы изображение было обрезано или дополнено, или просто соответствовало ширине или высоте.

convert \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "LEFT" \) \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "RIGHT" \) \
-background white +smush +2 -write mpr:leftright +delete +gravity \
input.jpg +repage -write mpr:img -delete 0--1 -background none -bordercolor black \
\( \( mpr:img -crop 240x151+462+176 +repage -border 2 \) \( mpr:img -crop 240x151+87+257 +repage -border 2 \) \
+smush +6 -resize 380x150! mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-A.png \) -delete 0--1 \
\( \( mpr:img -crop 240x151+468+542 +repage -border 2 \) \( mpr:img -crop 240x151+140+624 +repage -border 2 \) \
+smush +6 -resize 380x150! mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-B.png \) null:


enter image description here

enter image description here

ДОПОЛНЕНИЕ 3:

Если вы хотите изменить размер двух конечных выходных изображений, введите команду изменения размера непосредственно перед записью этих изображений.

convert \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "LEFT" \) \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "RIGHT" \) \
-background white +smush +2 -write mpr:leftright +delete +gravity \
input.jpg +repage -write mpr:img -delete 0--1 -background none -bordercolor black \
\( \( mpr:img -crop 240x151+462+176 +repage -border 2 \) \( mpr:img -crop 240x151+87+257 +repage -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -resize 380x150! -write Img-A.png \) -delete 0--1 \
\( \( mpr:img -crop 240x151+468+542 +repage -border 2 \) \( mpr:img -crop 240x151+140+624 +repage -border 2 \) \
+smush +6  mpr:leftright +swap -gravity center -smush +3 +gravity -resize 380x150! -write Img-B.png \) null:


enter image description here

enter image description here

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