日常生活,我们见过的二维码中大多数都是由白底和很多黑点组成的二维条码,以X秘书表白墙的链接 为例:
http://love520.zhujinhui.net/?a=Jeffrey&b=X%E7%A7%98%E4%B9%A6&d=2024-01-01
它对应的普通二维码是这样的:
由于它是X秘书网站下的链接,想让它带有X秘书的元素符号:
还能给它点颜色瞧瞧,让它看起来像个真正的logo:
既然是个表白墙链接,心动的特效总要有吧:
当然还可以更“癫”点,生成一个“贪吃蛇”的二维码:
反正一个二维码有多“癫”,全看“艺术家”的代码艺术。
言归正传,这些二维码图片是到底是怎么生成的呢?这其实是python的一个很有趣的第三方库——amzqr实现的,GitHub地址为:
https://github.com/x-hw/amazing-qr
简介
amzqr是一个二维码生成器,它帮助我们可生成普通二维码、带图片的艺术二维码(黑白与彩色)、动态二维码(黑白与彩色)。
安装
pip install amzqr
使用方法
它有两种使用方式,一个是命令行,一种在python中直接调用库
命令行方式
(提示:如果你尚未安装 amzqr ,以下内容请使用python(3) amzqr.py
而非amzqr
。)
amzqr Words # 二维码扫描解析出来的字符串,可以是url也可以是普通文字
[-v {1,2,3,...,40}] # 二维码边长,1~40
[-l {L,M,Q,H}] # 纠错等级L、M、Q、H,依次升高,默认H
[-n output-filename] # 生成的二维码图片名称,格式可以是 .jpg, .png ,.bmp ,.gif
[-d output-directory] # 生成的二维码图片所在目录,默认当前目录
[-p picture_file] # 底图,二维码生成后与这个指定的底图融合,可以是静态图片,也可以是gif,默认为空
[-c] # 是否涂色,不传则不
[-con contrast] # 用来调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0
[-bri brightness] # 用来调节图片的亮度,其余用法和取值与 -con 相同。
比如 上面的“X秘书表白墙LOGO版二维码.png”的生成例子:
amzqr "http://love520.zhujinhui.net/?a=Jeffrey&b=X%E7%A7%98%E4%B9%A6&d=2024-01-01" -p xmishu.jpg -n xmishu_color_qrcode.png -c
作为导入文件
# 安装模块后
from amzqr import amzqr
version, level, qr_name = amzqr.run(
words, # 二维码扫描解析出来的字符串,可以是url也可以是普通文字
version=1, # 二维码边长,1~40
level='H', # 纠错等级L、M、Q、H,依次升高,默认H
picture=None, # 底图,二维码生成后与这个指定的底图融合,可以是静态图片,也可以是gif,默认为空
colorized=False, # 是否涂色
contrast=1.0, # 用来调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0
brightness=1.0, # 用来调节图片的亮度,其余用法和取值与 -con 相同。
save_name=None, # 生成的二维码图片名称,格式可以是 .jpg, .png ,.bmp ,.gif
save_dir=os.getcwd() # 生成的二维码图片所在目录,默认当前目录
)
最近520也是快到了,那么你可以找来一个动漫亲吻的gif,或者用你们真人拍摄视频后转过来的gif也可以,做picture底图来生成代表爱情的二维码:
生成一个有亲吻画面的二维码:
from amzqr import amzqr
amzqr.run(
"http://love520.zhujinhui.net/?a=Jeffrey&b=X%E7%A7%98%E4%B9%A6&d=2024-01-01",
picture="kiss.gif",
save_name="kiss_qrcode.gif",
colorized=True,
)
生成效果:
注意事项
- 请尽可能采用正方形或近似正方形的图片,否则可能会被压缩导致比例失衡,因为二维码最终都是正方形图片
- 建议在图片尺寸大的时候使用
-v
的值也应该适当变大。 - 尽可能少用有透明无色部分的图片
今天你学会了吗?学会了赶紧去试试吧!欢迎大家交流讨论!