当前位置: 首页 > 面试题库 >

如何使用python绘制具有不同笔触的文本并在图像上填充颜色?

龙兴贤
2023-03-14
问题内容

如何使用python绘制具有不同笔触的文本并在图像上填充颜色?

这是一些带有红色描边和灰色填充的文本。

例

我尝试使用PIL进行此操作,但是没有设置笔触颜色的选项。


问题答案:

使用cairo(从此处获取了很多代码):

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")


 类似资料:
  • 问题内容: 我尝试在图像的底部添加文本,实际上我已经完成了,但是如果我的文本较长,那么图像的宽度要从两侧切开,为简化起见,我希望文本在多行中长于图片宽度。这是我的代码: 问题答案: 您可以用来分解成字符串列表,每个字符串最多为字符:

  • 如何将标题字体颜色更改为白色,填充为绿色?以下是我正在使用的类: 我相信,这是必须插入的代码。

  • Ive得到了一个JFrame,并将LayoutManager设置为BorderLayout,然后继续添加带有图像的JLabel。但是,当我调整框架的大小时,JLabel不会调整大小。我没有向North,S,E等添加任何组件。我希望简单地让标签内的图像填满整个框架,当然,让我的菜单保持机智。

  • 我找到了这条线索-如何拉伸图像以填充 我有一个具有一定大小的div和其中的图像。无论图像是横向还是纵向,我都想始终用图像填充div。图像是否被切断也没关系(div本身隐藏了溢出)。 因此,如果图像是纵向的,我希望宽度是100%,高度是自动的,所以它保持成比例。如果图像是横向的,我希望高度为100%,宽度为自动。听起来很复杂对吧? 因为我不知道怎么做,我只是简单地创建了一个我的意思的快速图像。我甚至

  • 请帮我做这件事。我已经尝试了很多东西,甚至这里的反应如何显示图像上的文本,但没有得到所需的输出,如该页面的第一个图像所示。我试图用文本覆盖显示图像。我得到了一个用惰性适配器加载图像的代码。但是显示的图像在两侧都被填充。这是我得到的 这是我的代码: 平铺布局xml 网格布局 我正在给瓷砖充气

  • 输出为: matplotlib.figure.figure位于0x536ea70 我想看到空的情节,我正在通过pycon教程相同的代码产生了一个空的情节。