Amm*_*san 8 python image-processing python-imaging-library
我有使用 PIL 从字体文件生成字符图像的功能。对于当前示例,它生成白色背景图像和红色字符文本。我现在想要的是,我可以生成渐变颜色,而不是纯红色或任何其他颜色。我当前的代码可以做到这一点吗?我看过这篇文章,但它对我没有帮助。
编辑1:
目前,我正在使用 PIL 从字体文件生成英文字母图像。我的代码中的字体变量有 N 个“.ttf”文件。假设 N=3 都有不同的风格,例如 style1、style2、style3。我当前的代码总是会生成这N种不同的样式,具有固定的白色背景和固定的红色字符颜色。如下图所示。
我想为每种样式应用渐变,而不是角色的红色。即 style1 字体图像中的所有字符应具有相同的渐变,style 2 字体样式应具有与 style1 字符不同的渐变,但其所有字符应相同,依此类推。如下图(样式与上图不同,只是为了演示我想要的)。
到目前为止我的代码:
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')
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 10
一种相当简单的方法是在黑色背景上绘制白色文本,然后将其用作渐变背景上的 Alpha/透明度通道。
这是背景渐变:
#!/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')
Run Code Online (Sandbox Code Playgroud)
看起来alpha.png像这样:
看起来result.png像这样:
请注意,文本周围的区域是透明的。但您可以轻松地将其粘贴到白色或黑色背景上。因此,假设您想要黄色背景,请将以下内容添加到上面代码的底部:
solid = Image.new('RGB', (w,h), 'yellow')
solid.paste(image,image)
solid.save('result2.png')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1617 次 |
| 最近记录: |