你有没有遇到过这种情况?朋友开了一家小店,想做个带微信收款码的海报,又怕手写的不美观还容易出错。或者你在做活动报名系统,需要给每位参与者生成专属报名链接的二维码。这时候,用 Python 自动生成二维码就成了一个又快又准的办法。
为什么选Python来生成二维码
Python 语法简单,第三方库丰富,生成二维码这种任务对它来说轻而易举。只需要几行代码,就能把一串网址、一段文字,甚至联系方式变成一个标准的二维码图片,还能自定义颜色、大小,甚至加个Logo上去,看起来专业多了。
安装必要的库:qrcode
Python 中最常用的二维码生成库是 qrcode,它支持基本功能,使用也特别简单。打开命令行,输入下面这行命令安装:
pip install qrcode[pil]
这里加上 [pil] 是为了支持生成图片文件,因为默认的 qrcode 只能输出文本格式的二维码,加上这个扩展后就能保存为 PNG、JPG 这类常见图片了。
生成一个最简单的二维码
比如你想把“https://www.wangluobaodian.com”这个网址变成二维码,代码可以这么写:
import qrcode
# 创建二维码实例
data = "https://www.wangluobaodian.com"
img = qrcode.make(data)
# 保存为图片
img.save("qrcode.png")
运行之后,当前目录下就会出现一个叫 qrcode.png 的图片,用手机扫一扫,直接跳转到网站,方便得很。
自定义二维码样式
如果你觉得默认的黑白方块太单调,可以进一步设置参数。比如调整二维码的纠错等级、大小、边距等:
import qrcode
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data("欢迎访问网络宝典!")
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save("custom_qr.png")
这里的 fill_color 和 back_color 支持颜色名称或十六进制值,比如改成 "#FF5733" 也没问题,让你的二维码更有个性。
实战小例子:生成带名字的WiFi连接码
有时候家里来客人,不想一条条说WiFi账号密码,可以直接生成一个扫码就能连的二维码。格式通常是这样的:WIFI:S:你的网络名;T:WPA;P:密码;;
import qrcode
wifi_info = "WIFI:S:MyHomeWiFi;T:WPA;P:12345678;;"
qr = qrcode.QRCode(box_size=8)
qr.add_data(wifi_info)
qr.make(fit=True)
img = qr.make_image(fill_color="blue", back_color="white")
img.save("wifi_qr.png")
打印出来贴在客厅,客人扫一下就自动连接,省事又体面。
加个Logo让二维码更醒目
如果你是为品牌或活动做二维码,可以中间加个小图标。需要用到 PIL 库来合并图像:
from PIL import Image
import qrcode
# 生成二维码
qr = qrcode.QRCode(box_size=10)
qr.add_data("https://www.wangluobaodian.com")
qr.make(fit=True)
img_qr = qr.make_image(fill_color="black", back_color="white").convert('RGBA')
# 打开要嵌入的Logo(建议小一点)
logo = Image.open('logo.png').convert('RGBA')
# 调整Logo大小
width, height = img_qr.size
logo_size = width // 5
logo = logo.resize((logo_size, logo_size))
# 计算居中位置
pos = ((width - logo_size) // 2, (height - logo_size) // 2)
# 合并图像
img_qr.paste(logo, pos, logo)
img_qr.save('qr_with_logo.png')
注意:Logo 不宜太大,否则会影响扫码识别。一般控制在二维码三分之一以内比较稳妥。
这些方法学会了,日常生活中很多场景都能用上。不管是分享链接、传递信息,还是做点小工具,Python 生成二维码既实用又有趣。