Python在线生成二维码,是时候展现真正的技术了
Posted 书圈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python在线生成二维码,是时候展现真正的技术了相关的知识,希望对你有一定的参考价值。
本文内容摘自《Python数据科学零基础一本通》,有删改。
目前流行的二维码(QR code)是1994年由日本Denso-Wave公司发明的。英文字中 QR 所代表的意义是Quick Response,即快速反应。QR code最早用于汽车制造商追踪零件,目前已应用于各行各业。它的最大特点是可以存储比普通条形码更多的数据,同时也无须对准扫描仪。
扫码限时优惠购书
二维码由
边框区
和
数据区
所组成,数据区由定位标记、校正图块、版本信息、原始信息、容错信息所组成,这些信息经过编码后产生二进制字符串,白色格子代表 0,黑色格子代表 1,这些格子一般又称作模块。
其实经过编码后,还会使用屏蔽(masking)方法将原始二进制字符串与屏蔽图案(Mask Pattern)做 XOR 运算,产生实际的编码,经过处理后的 QR code 辨识率将更高。QR code基本外观如下 :
边框区:也可以称为非数据区,主要是避免 QR code 周围的图像影响辨识
定位标记:在上述图片中,左上、左下、右上是定位标记,外型类似“回”字,在使用 QR code 扫描时我们可以发现不用完全对准也可以,主要是这 3 个定位标记在帮助扫描定位。
校正图块:主要用于校正辨识。
容错修功能:QR code 有容错功能,所以如果 QR code 有破损,有时仍然可以读取,一般 QR code 的面积越大,容错能力越强。
QR code 目前有 40 个不同版本,版本 1 是 21×21 个模块。模块是 QR code 最小的单位,每增加一个版本,长宽各增加 4 个模块,所以版本 40 是由 177×177 个模块组成,下列是以版本 40 为例做容量解说。
img = qrcode.make(" 网址数据 ")
# 产生网址数据的 QR code 对象 img
img.save("fi lename")
# fi lename 是储存 QR code 的文件名
建立 http://www.deepstone.com.tw 的 QR code,这个程序会先列出 img 对象
的数据形态,同时将此对象存入 out17_23.jpg 内。
建立“Python 王者归来”字符串的 QR code。
上述我们使用 qrcode.make( ) 方法建立 QR code,这是使用预设方法建立 QR code,实际qrcode.make( ) 方法内含 3 个子方法,整个方法原始码如下 :
def make(data=None, **kwargs):
qr =qrcode. QRCode(**kwargs) # 设置条形码格式
qr.add_data(data) # 设置条形码内容
return qr.make_image( ) # 建立条形码图片
qr = qrcode.QRCode(version, error_correction, box_size, border,
image_factory,mask_pattern)
version :QR code 的版次,可以设置 1 ~ 40 的版次。
error_correction :容错率,可选 7%、15%、25%、30%,参数如下 :
qrcode.constants.ERROR_CORRECT_L :7%
qrcode.constants.ERROR_CORRECT_M :15%(预设)
qrcode.constants.ERROR_CORRECT_Q :25%
qrcode.constants.ERROR_CORRECT_H :30%
image_factory :图片格式,默认是 PIL。
mask_pattern :mask_pattern 参数是 0 ~ 7,如果省略会自行使用最适当的方法。
qr.add_data(data) # data 是所设置的条形码内容
img = qr.make_image([fi ll_color], [back_color], [image_factory])
预设前景是黑色,背景是白色,可以使用 fi ll_color 和 back_color 分别更改前景和背景颜色,最后建立 qrcode.image.pil.PilImage。
有时候可以看到有些人的名片上有 QR code,使用手机扫描后便能得到此名片的信息。为了完成此工作,我们必须使用 vCard(virtual card)格式。它的数据格式如下 :
上述数据必须建在一个字符串上,未来只要将此字符串当作 QR code 数据即可。下列是常用的属性 :
以上是关于Python在线生成二维码,是时候展现真正的技术了的主要内容,如果未能解决你的问题,请参考以下文章
C# 代码生成二维码方法及代码示例(QRCoder)
燃是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点
传智教学 · 项目作品展系列栏目∣移动web实战,是时候展现真正的技术了!
Android_demo之生成二维码
酷毙了!生成自定义二维码,5行Python代码就搞定
Python生成器的问题