python生成带照片的二维码图片_Python生成带文字的二维码

import qrcode

from PIL import Image

from PIL import ImageDraw

from PIL import ImageFont

# 二维码图片地址

QR_IMG = '/Users/admin/Desktop/project/imgs/'

# 字体地址

TTF_BIR = '/Users/admin/Desktop/project/msyh.ttf'

# 背景图片地址(我用的是一个空白图片)

BG_BIR = "/Users/admin/Desktop/project/bg.png"

# 生成二维码

def make_qr(data):

qr = qrcode.QRCode(

version=1,

error_correction=qrcode.constants.ERROR_CORRECT_L,

box_size=10,

border=2,

)

# 添加数据

qr.add_data(data)

# 填充数据

qr.make(fit=True)

# 生成图片

img = qr.make_image(fill_color="black", back_color="white")

img = img.convert("CMYK") # RGBA

img = img.convert('RGB')

img.save(QR_IMG + data + '.png')

# 填充文字

def nature_info(num, nature):

oriImg = Image.open(QR_IMG + num + ".png")

draw = ImageDraw.Draw(oriImg)

font = ImageFont.truetype(TTF_BIR, 20) # 设置字体

# 字体的位置 、颜色

draw.text((0, 40), '性质: ' + nature, (50, 51, 51), font=font) # 把字添加到图片上

oriImg = oriImg.convert('RGB')

oriImg.save(QR_IMG + num + '.png')

# 填充文字

def category_info(num, category):

oriImg = Image.open(QR_IMG + num + ".png")

draw = ImageDraw.Draw(oriImg)

font = ImageFont.truetype(TTF_BIR, 20) # 设置字体

# 字体的位置 、颜色

draw.text((0, 80), '品类: ' + category, (50, 51, 51), font=font) # 把字添加到图片上

oriImg = oriImg.convert('RGB')

oriImg.save(QR_IMG + num + '.png')

# 填充字体

def product_name_info(num, product_name):

oriImg = Image.open(QR_IMG + num + ".png")

draw = ImageDraw.Draw(oriImg)

font = ImageFont.truetype(TTF_BIR, 20) # 设置字体

# 字体的位置 、颜色

draw.text((0, 120), '品名: ' + product_name, (50, 51, 51), font=font) # 把字添加到图片上

oriImg = oriImg.convert('RGB')

oriImg.save(QR_IMG + num + '.png')

# 填充字体

def color_info(num, colors):

oriImg = Image.open(QR_IMG + num + ".png")

draw = ImageDraw.Draw(oriImg)

font = ImageFont.truetype(TTF_BIR, 20) # 设置字体

# 字体的位置 、颜色

draw.text((0, 160), '颜色: ' + colors, (50, 51, 51), font=font) # 把字添加到图片上

oriImg = oriImg.convert('RGB')

oriImg.save(QR_IMG + num + '.png')

# 填充字体

def specifications_info(num, specifications):

oriImg = Image.open(QR_IMG + num + ".png")

draw = ImageDraw.Draw(oriImg)

font = ImageFont.truetype(TTF_BIR, 20) # 设置字体

# 字体的位置 、颜色

draw.text((0, 200), '规格: ' + specifications, (50, 51, 51), font=font) # 把字添加到图片上

oriImg = oriImg.convert('RGB')

oriImg.save(QR_IMG + num + '.png')

# 填充字体

def level_info(num, level):

oriImg = Image.open(QR_IMG + num + ".png")

draw = ImageDraw.Draw(oriImg)

font = ImageFont.truetype(TTF_BIR, 20) # 设置字体

# 字体的位置 、颜色

draw.text((0, 240), '等级: ' + level, (50, 51, 51), font=font) # 把字添加到图片上

oriImg = oriImg.convert('RGB')

oriImg.save(QR_IMG + num + '.png')

# 在背景图片上布局二维码和字体

def info(num, nature_name, category_name, product_name, colors_name, specifications_name, level_name):

make_qr(num)

oriImg = Image.open(BG_BIR)

oriImg2 = Image.open(QR_IMG+ num + '.png')

oriImg2 = oriImg2.resize((250, 250))#设置二维码大小

oriImg.paste(oriImg2, (150, 50))#将二维码放在底图上

draw = ImageDraw.Draw(oriImg)

font = ImageFont.truetype(TTF_BIR, 20)#设置字体

# 编号

draw.text((0, 0), '编号: '+num, (50, 51, 51), font=font)#把字添加到图片上

oriImg = oriImg.convert('RGB')

oriImg.save(QR_IMG + num + '.png')

nature_info(num, nature_name)

category_info(num, category_name)

product_name_info(num, product_name)

color_info(num, colors_name)

specifications_info(num, specifications_name)

level_info(num, level_name)

if __name__ == '__main__':

info("800000848668", 'df', 'fgr', '皇冠', 'er', 'etgh', 'jhgf')

print("nice,nice,nice,nice")

可以使用qrcode库来生成图片二维码,具体步骤如下: 1. 安装qrcode库: ``` pip install qrcode ``` 2. 导入库: ``` import qrcode from PIL import Image ``` 3. 生成二维码: ``` qr = qrcode.QRCode(version=5, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4) qr.add_data("https://www.example.com") qr.make(fit=True) img_qr = qr.make_image(fill_color="black", back_color="white") ``` 其,version表示二维码的大小(1-40),error_correction表示纠错级别(L、M、Q、H),box_size表示每个小格子的像素大小,border表示二维码边框宽度,add_data()方法用来添加数据,make()方法用来生成二维码,make_image()方法用来生成图片。 4. 添加图片: ``` icon = Image.open("icon.png") img_qr = img_qr.convert("RGBA") icon = icon.resize((50, 50)) w, h = img_qr.size wi, hi = icon.size wb, hb = int((w - wi) / 2), int((h - hi) / 2) img_qr.paste(icon, (wb, hb), mask=None) ``` 其,icon.png是要添加的图片,resize()方法用来调整图片大小,paste()方法用来将图片粘贴到二维码心。 5. 保存图片: ``` img_qr.save("qr.png") ``` 完整代码如下: ``` import qrcode from PIL import Image qr = qrcode.QRCode(version=5, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4) qr.add_data("https://www.example.com") qr.make(fit=True) img_qr = qr.make_image(fill_color="black", back_color="white") icon = Image.open("icon.png") img_qr = img_qr.convert("RGBA") icon = icon.resize((50, 50)) w, h = img_qr.size wi, hi = icon.size wb, hb = int((w - wi) / 2), int((h - hi) / 2) img_qr.paste(icon, (wb, hb), mask=None) img_qr.save("qr.png") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值