Используйте Imagemagick для создания строки с текстом в верхней части изображения и другой текстовой строки внизу

#imagemagick

#imagemagick

Вопрос:

Пытаясь создать сплошное прозрачное полотно размером 1920Х1920, затем поместите цветную полосу размером 1920Х420 вверху с текстом по центру и такую же внизу с другим текстом по центру.

То, что я делаю сейчас, когда оно создается, создает прозрачное изображение 1920X1920 и помещает панель вверху с текстом, но панель внизу не существует.

 convert -size 1920x1920 xc:"transparent" -size 1920x420 -font 
Din-Condensed-Bold -pointsize 84 canvas:#800000 -fill black -
gravity center  caption:"TEXT FOR THE BOTTOM"   -gravity south  
-composite -size 1920x420 -font Din-Condensed-Bold -pointsize 84 
canvas:#800000 -fill black -gravity center  caption:"TEXT FOR THE 
TOP"   -gravity north  -composite newfile.png
  

Ответ №1:

Несколько вещей…

Основная проблема заключается в том, что вы задаете цвет фона для метки с помощью -background , а не canvas: .

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

Затем ваша команда становится такой:

 convert -size 1920x1920 xc:yellow 
    -size 1920x420 -font "AppleChancery"  -pointsize 84 -background "#800000" -fill black 
    -gravity center  caption:"TEXT FOR THE BOTTOM" -gravity south -composite         
    -gravity center  caption:"TEXT FOR THE TOP"    -gravity north -composite result.png
  

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

Очень по-испански, вы не находите? 🙂


На случай, если вы действительно искали -undercolor :

 convert -size 1920x1920 xc:yellow 
    -size 1920x420 -font "AppleChancery"  -pointsize 84 -background magenta -undercolor cyan -fill black 
    -gravity center  caption:"TEXT FOR THE BOTTOM" -gravity south -composite         
    -gravity center  caption:"TEXT FOR THE TOP"    -gravity north -composite result.png
  

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


Вы говорите, что хотите немного «передышки» по краям, поэтому я добавляю еще один пример. Я делаю красные и желтые рамки немного меньше пурпурного фона и размещаю верхнюю вставку на расстоянии 5 пикселей сверху и 5 слева, используя -geometry . Аналогично, я установил гравитацию на юго-запад и расположил желтую рамку на расстоянии 2 пикселей от правого края и 25 от нижнего:

 convert -size 100x100 xc:magenta -size 90x20               
   -gravity northwest xc:red    -geometry  5 5  -composite 
   -gravity southeast xc:yellow -geometry  2 25 -composite result.png
  

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

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

1. Это было великолепно. Спасибо @Mark. Я забыл спросить, возможно ли добавить отступы только к баннерам? Я смог использовать -border для добавления отступа, но он применяется ко всему изображению, когда я просто хочу, чтобы он был на верхнем баннере и нижнем баннере. Если вы хотите, я могу создать отдельный вопрос, чтобы я мог дать вам баллы. 🙂

2. Попробуйте добавить -bordercolor blue -border x35 непосредственно перед выходным именем файла. Это означает, что вы устанавливаете только высоту границы и не задаете ширину, поэтому она не применяется к сторонам.

3. Это позволяет охватить все это целиком. Итак, вместо синей рамки вокруг всего пространства 1920×1920. Я пытаюсь

4. Поместите одну строку вокруг розового баннера вверху и одну — вокруг розового баннера внизу в соответствии с вашим примером выше. По сути, я пытаюсь добавить текстовое заполнение больше, чем рамку. Так что, возможно, есть другой способ. Я просто не хочу, чтобы текст полностью прилегал к краям окна, в котором он находится.

5. Через минуту мне нужно перейти в автономный режим. Создайте новый вопрос с примером того, что вы хотите, и кто-нибудь из других ребят ответит на него, или я вернусь к нему позже. Вопросы бесплатны 🙂