How can I draw text with different stroke and fill colors on images with python?

后端 未结 6 591
忘了有多久
忘了有多久 2020-12-09 10:33

How can I draw text with different stroke and fill colors on images with python?

Here is some text with red stroke and gray fill.

6条回答
  •  隐瞒了意图╮
    2020-12-09 11:14

    Using cairo (with much code taken from here):

    import cairo
    
    def text_extent(font, font_size, text, *args, **kwargs):
        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 0, 0)
        ctx = cairo.Context(surface)
        ctx.select_font_face(font, *args, **kwargs)
        ctx.set_font_size(font_size)
        return ctx.text_extents(text)
    
    text='Example'
    font="Sans"
    font_size=55.0
    font_args=[cairo.FONT_SLANT_NORMAL]
    (x_bearing, y_bearing, text_width, text_height,
     x_advance, y_advance) = text_extent(font, font_size, text, *font_args)
    surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(text_width), int(text_height))
    ctx = cairo.Context(surface)
    ctx.select_font_face(font, *font_args)
    ctx.set_font_size(font_size)
    ctx.move_to(-x_bearing, -y_bearing)
    ctx.text_path(text)
    ctx.set_source_rgb(0.47, 0.47, 0.47)
    ctx.fill_preserve()
    ctx.set_source_rgb(1, 0, 0)
    ctx.set_line_width(1.5)
    ctx.stroke()
    
    surface.write_to_png("/tmp/out.png")
    

    enter image description here

提交回复
热议问题