Как рисовать текст и затенять его в ImageMagick?

Я печатаю текст на изображении с помощью convert и хочу украсить текст черной тенью, я попробовал -blur или -gaussian но я не могу применить к тексту, он применяется только к фоновому изображению. Мне нужно использовать команду -draw, а не -annotate.

И это код, который мне нужно обновить для затенения

-font "geometricslab703bt-bold-webfont.ttf" -fill White -pointsize 18 -draw "rotate -4 text 350,250 '---- mijn ideale ----'"

заранее спасибо


person axel    schedule 31.12.2013    source источник


Ответы (2)


Лучшим и более гибким способом работы с тенью текста является визуализация тени на новом слое. Этот метод позволит вам манипулировать теневым текстом по мере необходимости, не затрагивая фон. Наконец, нарисуйте фактический текст поверх тени после настройки любого геометрического смещения. Вот пример:

convert -size 280x100 pattern:SMALLFISHSCALES \
  \( xc:transparent -font "Menlo" -pointsize 32 -fill black -draw "rotate -4 text 20,60 'ImageMagick'" -blur 0x1 \) \
  -geometry +2+2   -composite \
  -font "Menlo" -fill white -pointsize 32 -draw "rotate -4 text 20,60 'ImageMagick'" \
  example.png

Сквозные фигурные скобки "\( \)" создадут новое субизображение; который будет применен к фону с флагом -composite.

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

Это решение немного более трудоемкое, но сохраняет все ваши эффекты изолированными.

person emcconville    schedule 31.12.2013

Вы можете использовать caption для рисования текста и создать теневой слой с помощью clone, а затем объединить два слоя.

convert logo: -resize 40%x40 \
    \( -size "80x40" -background none -gravity west  -fill green caption:"Caption text" \
    \( +clone -background navy -shadow 80x3+5+5  \) +swap -background none -layers merge +repage \) -composite \
    \( -size "80x40" -background none -gravity east  -fill green caption:"Caption text"  \
    \( +clone -background red -shadow 80x3+5+5  \) +swap -background none -layers merge +repage \) -composite \
    out.png

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

person LF00    schedule 01.08.2019