qrcode生成一个带有图片的二维码


import qrcode
 
 
qr = qrcode.QRCode(
    version=2,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=1
)
qr.add_data("http://jb51.net/")
qr.make(fit=True)
img = qr.make_image()
img.save("dhqme_qrcode.png")

参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码,version 每增加 1,生成的二维码就会添加 4 尺寸,例如 version 是 2,则生成 25 * 25 的二维码。

参数 error_correction 指定二维码的容错系数,分别有以下4个系数:

1.ERROR_CORRECT_L: 7%的字码可被容错
2.ERROR_CORRECT_M: 15%的字码可被容错
3.ERROR_CORRECT_Q: 25%的字码可被容错
4.ERROR_CORRECT_H: 30%的字码可被容错

参数 box_size 表示二维码里每个格子的像素大小。

参数 border 表示边框的格子厚度是多少(默认是4)。

运行上面代码会生成敝站的一个 QR Code:

生成带有图标的二维码

二维码的容错系数(上面所指的 error_correction)越高,生成的二维码则可允许的残缺率越大,且二维码的数据主要保存在图片的四个角上,所以在二维码中间放一个小图标,对二维码的识别也是不受多大影响的。

对于插入在二维码上的图标大小,这里指定限制图标的大小尺寸最大是二维码长宽的 1/4,以免残缺太大,影响识别。

最后结合 Python 图像库(PIL)的操作,把图片黏贴(paste)在二维码图片的中间,便可以生成一个带有图标的二维码,具体操作代码如下:

复制代码 代码如下:

import Image
import qrcode
 
 
qr = qrcode.QRCode(
    version=2,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=1
)
qr.add_data("http://jb51.net/")
qr.make(fit=True)
 
img = qr.make_image()
img = img.convert("RGBA")
 
icon = Image.open("favicon.png")
 
img_w, img_h = img.size
factor = 4
size_w = int(img_w / factor)
size_h = int(img_h / factor)
 
icon_w, icon_h = icon.size
if icon_w > size_w:
    icon_w = size_w
if icon_h > size_h:
    icon_h = size_h
icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
 
w = int((img_w - icon_w) / 2)
h = int((img_h - icon_h) / 2)
img.paste(icon, (w, h), icon)
 
img.save("dhqme_qrcode.png")

QR Code(快速响应码)是一种矩阵式条码,常用于存储网址、联系信息等数据,方便用户扫描获取信息。如果你想生成一个带有Logo和文字的二维码,通常需要借助一些专门的工具或库,比如在编程环境中可以使用Python的`qrcode`库,JavaScript的`qrcode-generator`库,或者是在线的二维码生成器。 下面是一个简单的步骤概述: 1. **选择库**:如果你熟悉编程,可以下载并引入相应的库,如Python中安装`pip install qrcode[pil]`来支持图像处理。 2. **创建二维码**:通过API或库提供的函数,输入你要编码的数据,通常是URL加上Logo和文字描述。 3. **添加Logo**:对于Python,你可以先将Logo转换成位图,然后拼接到二维码的适当位置。 4. **添加文字**:可以在二维码旁边或者内部嵌入文本,这通常依赖于库的具体功能。 5. **保存图片**:生成完成后,将其保存为常见的图片格式,如PNG或JPEG。 **示例代码(Python)**: ```python import qrcode from PIL import Image # 创建二维码数据 data = "https://example.com" logo_path = 'logo.png' text = "欢迎扫描" # 创建二维码对象 qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=5, ) # 添加数据 qr.add_data(data) qr.make(fit=True) # 画布大小 size = (qr.size * 4, qr.size * 4) # 创建Image img = Image.new('RGB', size, (255, 255, 255)) drawing = ImageDraw.Draw(img) # 绘制二维码 qr_img = qr.make_image(fill='black', back_color='white') pos = ((size[0] - qr_img.width) // 2, (size[1] - qr_img.height) // 2) img.paste(qr_img, pos) # 添加Logo logo = Image.open(logo_path).resize((qr_img.width, qr_img.height), resample=Image.ANTIALIAS) logo_pos = (pos[0], pos[1] - logo.height // 2) img.paste(logo, logo_pos) # 添加文字 font = ImageFont.truetype("arial.ttf", 16) text_pos = (pos[0]+logo.width//2, pos[1]-20) drawing.text(text_pos, text, fill=(0, 0, 0), font=font) # 保存二维码 img.save("qrcode_with_logo.png") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值