注意: 依赖字体链接,请点击:pyhton 创建一个透明背景的文字图片源代码-包含Kaiti.ttf 字体文件
文件结构如下:
安装依赖包 (Pillow==10.0.1):
pip install Pillow
代码带注释:
# -*- coding: utf-8 -*-
from PIL import Image, ImageDraw, ImageFont
import base64
from io import BytesIO
def generate_sign(text):
# 创建一个新的白色透明图片
img = Image.new('RGBA', (300, 150), (255, 255, 255, 0))
# 创建Draw对象,用于在图片上绘图
draw = ImageDraw.Draw(img)
# 选择一个字体和大小
font = ImageFont.truetype('Kaiti.ttf', 66)
# 在图片上写入文字
draw.text((10, 10), text, font=font, fill=(0, 0, 0))
# 创建一个BytesIO对象,它是内存中的一个文件,可以像普通文件一样进行读写操作,但实际上数据是存储在内存中的;
img_io = BytesIO()
# 将图片保存到BytesIO对象(存放至内存中)
img.save(img_io, 'png')
# 从BytesIO中获取图片数据,返回一个字节串(bytes)
img_byte = img_io.getvalue()
# 将图像数据编码为base64字符串
img_data = base64.b64encode(img_byte).decode('utf-8')
# 将base64字符串转换为Data URL 格式
img_url = "data:image/png;base64," + img_data
# 把字符串编码为byte格式
img_url_b = img_url.encode()
# 将生成的图片保存到本地
# img.save('test.png')
return img_url_b
if __name__ == "__main__":
generate_sign('张三')
纯净版(去除注释):
# -*- coding: utf-8 -*-
from PIL import Image, ImageDraw, ImageFont
import base64
from io import BytesIO
def generate_sign(text):
img = Image.new('RGBA', (300, 150), (255, 255, 255, 0))
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('Kaiti.ttf', 66)
draw.text((10, 10), text, font=font, fill=(0, 0, 0))
img_io = BytesIO()
img.save(img_io, 'png')
img_byte = img_io.getvalue()
img_data = base64.b64encode(img_byte).decode('utf-8')
img_url = "data:image/png;base64," + img_data
img_url_b = img_url.encode()
# img.save('test.png')
return img_url_b
if __name__ == "__main__":
generate_sign('张三')
img.save(‘test.png’) 结果如下: