直接上代码吧,都有注释,看得明白
将代码复制到main.py文件中,就可以调试了
from PIL import Image, ImageDraw, ImageFont
import matplotlib.font_manager as fm
from matplotlib.font_manager import FontProperties
import os
import qrcodedef main():print("Hello, World!")font_size = 14# 设置字体(假设你已经安装了文泉驿字体)font_name = "文泉驿" #将系统的所有字体查询出来fonts = fm.findSystemFonts(fontpaths=None, fontext='ttf')#print(fonts)matching_fonts = [f for f in fonts if font_name in f]; fontPath=matching_fonts[0]; #这里我取第一个字体,如果需要筛选可以循环处理# 测试这些字体是否支持中文字符# for fp in matching_fonts:# font_prop = FontProperties(fname=fp)# try:# text = "测试中文字符"# if any(ord(char) > 127 for char in text): # 检查是否有非ASCII字符# print(f"{fp} 支持中文字符")# else:# print(f"{fp} 不支持中文字符")# except Exception as e:# print(f"无法加载字体 {fp}: {e}")#获取支持中文的字体 Linux默认字体下不支持中文,会打印乱码font = ImageFont.truetype(fontPath,font_size) # 创建一个空白图像 背景白色width, height = 350, 280image = Image.new('RGB', (width, height), 'white')# 获取绘图对象draw = ImageDraw.Draw(image)# 绘制文本信息 draw.text(xy=(10, 10), text=f"品牌:纳里腾", fill='black', font=font,kwargs={"font_size":font_size})draw.text(xy=(10, 50), text=f"第一代豆浆原液美容产品", fill='black', font=font,kwargs={"font_size":font_size})draw.text(xy=(10, 80), text=f"村头老陈", fill='black', font=font,kwargs={"font_size":font_size})# 生成二维码qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=2,border=1,)#填充二维码内容qr.add_data('品牌:纳里腾\r\n')qr.add_data('第一代豆浆原液美容产品\r\n')qr.add_data('村头老陈\r\n')qr.make(fit=True)# 创建二维码图像img = qr.make_image(fill='black', back_color='white')# 将二维码转换为Pillow图像对象img = img.convert("RGBA")# 将二维码粘贴到背景图像上 定位坐标image.paste(img, (250, 150))# 可以保存到文件image.save("123.bmp")if __name__ == "__main__":main()
扩展阅读:Python 生成BMP图像,并转成Base64 和 16进制数组_python将bmp格式转换成16进制数据-CSDN博客