python wand:创建文本drops阴影

时间:2016-05-18 09:32:13

标签: python imagemagick dropshadow wand

有没有人尝试使用python魔杖创建drophadow?我浏览了这个文档,无法找到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 个答案:

答案 0 :(得分:4)

  

有没有人尝试使用python魔杖创建drophadow?

如果您搜索代码,有一些技巧和示例。

  

我浏览了这个文档但找不到drophadow属性。

会看到一个属性,因为在矢量绘图上下文中,这些阴影是无意义的。 (至少我认为)

这是创建文本阴影的一种方法/方法。

  1. 画阴影
  2. 应用过滤器(可选)
  3. 绘制文字
  4. 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')
    

    Creating Text dropshadow

    编辑以下是与“使用示例”匹配的另一个示例。

    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