Палочка питона: создание текстовой тени

Кто-нибудь пробовал создавать капли с помощью Python Wand? Я просмотрел этот документ и не смог найти атрибут drophadow.

http://docs.wand-py.org/en/0.4.1/wand/drawing.html


Согласно imagemagick это можно сделать, выполнив ниже: http://www.imagemagick.org/Usage/fonts/

   convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
           -fill black -draw "text 28,68 'Anthony'" \
           -fill white -draw "text 25,65 'Anthony'" \
           font_shadow.jpg

Как я могу адаптировать это в Python?

1 ответ

Решение

Кто-нибудь пробовал создавать капли с помощью Python Wand?

Есть несколько приемов и примеров, если вы будете искать по метке палочки.

Я просмотрел этот документ и не смог найти атрибут drophadow.

Вы не увидите атрибута, так как капля не имеет смысла в контексте векторного рисования. (по крайней мере, я думаю)

Вот один подход / метод для создания текстовых теней.

  1. Нарисуйте тень
  2. Применить фильтр (необязательно)
  3. Рисовать текст
from wand.color import Color
from wand.compat import nested
from wand.drawing import Drawing
from wand.image import Image

dimensions = {'width': 450,
              'height': 100}

with nested(Image(background=Color('skyblue'), **dimensions),
            Image(background=Color('transparent'), **dimensions)) as (bg, shadow):
    # Draw the drop shadow
    with Drawing() as ctx:
        ctx.fill_color = Color('rgba(3, 3, 3, 0.6)')
        ctx.font_size = 64
        ctx.text(50, 75, 'Hello Wand!')
        ctx(shadow)
    # Apply filter
    shadow.gaussian_blur(4, 2)
    # Draw text
    with Drawing() as ctx:
        ctx.fill_color = Color('firebrick')
        ctx.font_size = 64
        ctx.text(48, 73, 'Hello Wand!')
        ctx(shadow)
    bg.composite(shadow, 0, 0)
    bg.save(filename='/tmp/out.png')

Создание текстовых теней

Редактировать Вот еще один пример, который соответствует примеру использования.

from wand.color import Color
from wand.drawing import Drawing
from wand.image import Image

# -size 320x100 xc:lightblue
with Image(width=320, height=100, background=Color('lightblue')) as image:
    with Drawing() as draw:
        # -font Candice
        draw.font = 'Candice'
        # -pointsize 72
        draw.font_size = 72.0
        draw.push()
        # -fill black
        draw.fill_color = Color('black')
        # -draw "text 28,68 'Anthony'"
        draw.text(28, 68, 'Anthony')
        draw.pop()
        draw.push()
        # -fill white
        draw.fill_color = Color('white')
        # -draw "text 25,65 'Anthony'"
        draw.text(25, 65, 'Anthony')
        draw.pop()
        draw(image)
    # font_shadow.jpg
    image.save(filename='font_shadow.jpg')

font_shadow.jpg

Другие вопросы по тегам