二维码(2-dimensional bar code),又称QR Code,是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。本教程将展示如何在原有黑白图片的基础上,给二维码添加一些色彩和动态效果,即给二维码换个皮肤。首先,简单了解一下二维码的基础知识。
二维码的基础知识
一个普通二维码的基本结构如下:
其中位置探测图像、定位图像和校验图形用于定位功能;格式信息表示二维码的纠错级别,分为L、M、Q、H;版本信息:从21x21(版本1),到177x177(版本40),每一版本符号比前一版本 每边增加4个模块;数据和纠错码字就是实际保存的二维码信息以及二维码变脏或破损用于修正的信息。
了解了二维码的基本结构后,下面开始用Python美化二维码。
1. 安装第三方库zxing和myqr
zxing用来识别二维码中的内容,myqr用来生成个性化的二维码,安装命令如下:
$ pip install zxing myqr
2. 二维码简单背景替换
1 | <em>二维码图片如下:</em> |
1 | <em>背景图片如下:</em> |
1 | # 导入xzing和myqr |
import zxing
from MyQR import myqr
import os
1 |
# 解析二维码中的内容
reader = zxing.BarCodeReader()
content = reader.decode("qrcode.png")
1 |
# 生成新的二维码
version, level, qr_name = myqr.run(
words=content.parsed, # 上面解析出来的二维码内容
version=1, # 设置容错率为最高
level='H', # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高
picture="luffy.png", # 要使用的图片
colorized=True, # 彩色二维码
contrast=1.0, #用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0
brightness=1.0, #用来调节图片的亮度,其余用法和取值同上
save_name="qr_colorized.png", # 保存文件的名字,格式可以是jpg,png,bmp,gif
save_dir=os.getcwd() #保存位置
)
1 | # 效果如下 |
下面再展示如何生成一个有动态效果的二维码。
3. 动态二维码
1 | # 动图如下 |
1 |
# 生成动图二维码
version, level, qr_name = myqr.run(
words=content.parsed, # 上面解析出来的二维码内容
version=1, # 设置容错率为最高
level='H', # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高
picture="penguin.gif", # gif图片
colorized=True, # 彩色二维码
contrast=1.0, #用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0
brightness=1.0, #用来调节图片的亮度,其余用法和取值同上
save_name="qrcode.gif", # 保存文件的名字,格式可以是jpg,png,bmp,gif
save_dir=os.getcwd() #保存位置
)
1 | # 效果如下 |
参考资料:
https://coolshell.cn/articles/10590.html 二维码的生成细节和原理
https://github.com/sylnsfar/qrcode
https://github.com/dlenski/python-zxing
欢迎关注我的公众号“Python的乐趣”,原创技术文章第一时间推送。