gpt4 book ai didi

python - 如何使用 PIL 绘制带有渐变颜色的字符?

转载 作者:行者123 更新时间:2023-12-03 23:05:05 28 4
gpt4 key购买 nike

我有使用 PIL 从字体文件生成字符图像的功能。对于当前示例,它生成一个白色背景图像和一个红色字 rune 本。我现在想要的是,我可以生成渐变色,而不是纯红色或任何其他颜色。我当前的代码可以这样做吗?我见过这个 post 但这对我没有帮助。
编辑 1:
目前,我正在使用 PIL 从字体文件生成英文字母图像。我的代码中的 fonts 变量有 N 个“.ttf”文件。让我们假设 N=3 都有不同的风格,例如样式 1、样式 2、样式 3。我当前的代码总是会生成这 N 种不同的风格,固定的白色背景和固定的红色字符颜色。如下图所示。
Style1
Style2
Style3
我想为每种样式应用渐变,而不是字符的红色。即 style1 字体图像中的所有字符应具有相同的渐变,样式 2 字体样式应与 style1 字符具有不同的渐变,但其所有字符应相同,依此类推。如下图(样式与上图不同,只是为了展示我想要的)。
gradient Style1
gradient Style2
gradient Style3
到目前为止我的代码:

fonts = glob.glob(os.path.join(fonts_dir, '*.ttf'))
for font in fonts:
image = Image.new('RGB', (IMAGE_WIDTH, IMAGE_HEIGHT), color='white')
font = ImageFont.truetype(font, 150)
drawing = ImageDraw.Draw(image)
w, h = drawing.textsize(character, font=font)
drawing.text(
((IMAGE_WIDTH-w)/2, (IMAGE_HEIGHT-h)/2),
character,
fill='red',
font=font
)
image.save(file_path, 'PNG')

最佳答案

一种相当简单的方法是在黑色背景上以白色绘制文本,然后将其用作带有渐变的背景上的 alpha/透明 channel 。
这是一个背景渐变:
enter image description here

#!/usr/bin/env python3

from PIL import Image, ImageDraw, ImageFont

w, h = 400, 150
image = Image.open('gradient.jpg').rotate(90).resize((w,h))
font = ImageFont.truetype('/System/Library/Fonts/MarkerFelt.ttc', 80)

# Create new alpha channel - solid black
alpha = Image.new('L', (w,h))
draw = ImageDraw.Draw(alpha)
draw.text((20,10),'Some Text',fill='white',font=font)
alpha.save('alpha.png')

# Use text cutout as alpha channel for gradient image
image.putalpha(alpha)
image.save('result.png')

alpha.png看起来像这样:
enter image description here
result.png看起来像这样:
enter image description here
请注意,文本周围的区域是透明的。但您可以轻松地将其粘贴到白色或黑色背景上。因此,假设您想要黄色背景,请将以下内容添加到上面代码的底部:
solid = Image.new('RGB', (w,h), 'yellow')
solid.paste(image,image)
solid.save('result2.png')
enter image description here

关于python - 如何使用 PIL 绘制带有渐变颜色的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63246100/

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