gpt4 book ai didi

image - 如何使用 Pycairo 输出透明 PNG?

转载 作者:行者123 更新时间:2023-12-02 15:40:05 26 4
gpt4 key购买 nike

这是我的代码:

import cairoimport osfrom PIL import Imageimagesize = (512,128)surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, *imagesize)cr = cairo.Context(surface)cr.select_font_face("Verdana", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)cr.set_font_size(24)cr.set_source_rgb(1, 1, 1)...surface.write_to_png("MyImage.png")

如您所见,我正在为此 PNG 绘制一些白色文本,但背景默认为不透明的黑色。如何使 png 透明以便仅显示白色文本?

最佳答案

我能够使用 set_source_rgba() 并使用 0.0 作为 alpha 值来设置透明背景:

cr.set_source_rgba(0.0, 0.0, 0.0, 0.0) # transparent black
cr.rectangle(0, 0, 512, 128)
cr.fill()

然后我还必须确保用这样的方式编写文本:
# set writing color to white
cr.set_source_rgb(1, 1, 1)

# write text
cr.move_to(100,50)
cr.show_text("hello")

# commit to surface
cr.stroke()

这是对我有用的完整代码:
import os
from PIL import Image

imagesize = (512,128)
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, *imagesize)

cr = cairo.Context(surface)

# paint background
cr.set_source_rgba(0.0, 0.0, 0.0, 0.0) # transparent black
cr.rectangle(0, 0, 512, 128)
cr.fill()

# setup font
cr.select_font_face("Verdana", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
cr.set_font_size(24)
cr.set_source_rgb(1, 1, 1)

# write with font
cr.move_to(100,50)
cr.show_text("hello")

# commit to surface
cr.stroke()

# save file
surface.write_to_png("MyImage.png")

关于image - 如何使用 Pycairo 输出透明 PNG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8955006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com