美文网首页
Python3实现生成和识别二维码

Python3实现生成和识别二维码

作者: 忘了呼吸的那只猫 | 来源:发表于2019-01-14 11:32 被阅读30次

环境:python3 jdk1.8(没安装会报错:FileNotFoundError: [Errno 2] No such file or directory: 'java': 'java')

一、安装依赖库

pip install qrcode pillow image zxing

pillow是python3中PIL的代替库,image是生成图版需要用到的库

安装image时报错“Could not install packages due to an EnvironmentError: [Errno 22] invalid mode ('wb') or filename”,没管,直接在pycharm的setting中安装就没报错了。

二、使用qrcode生成二维码

2.1 qrcode简单用法

以下是生成指向百度的二维码为例,用户扫描后会访问百度首页。代码如下。
另外注意我们日常使用是扫一个二维码就跳转到某个页面。但本质而言,扫二维码就是得到内容,而不会跳转什么页面。
比如微信等扫以下二维码就是得到“https://www.baidu.com”,至于自动跳到百度首页是因为微信添加了如果扫描二维码结果是url就自动跳转的代码造成的。
也就是说二维码的内容完全可以不是url,而是“abcd”等仍意字符串,用微信扫时显示“abcd”而不是跳转什么页面而已。
不过由于二维码(指qr code)的容量是有限的,只有几百到几千个字节,所以一般不会直接用来存图片等内容。

import qrcode

# 二维码内容
data = "https://www.baidu.com"
# 生成二维码
img = qrcode.make(data=data)
# 直接显示二维码
img.show()
# 保存二维码为文件
# img.save("baidu.jpg")

生成二维码

生成二维码如下:

www.baidu.com

2.2 qrcode高级用法

所谓高级用法,就是设置二维码大小、颜色等参数的写法。示例代码如下,其中实例化参意义如下:
version参数----二维码的格子矩阵大小,可以是1到40,1最小为2121,40是177177
error_correction参数----二维码错误容许率,默认ERROR_CORRECT_M,容许小于15%的错误率
box_size参数----二维码每个小格子包含的像素数量
border参数----二维码到图片边框的小格子数,默认值为4
(不太确定是不是都对,可直接查看官方说明:https://github.com/lincolnloop/python-qrcode#advanced-usage

import qrcode
# 实例化二维码生成类
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
# 设置二维码数据
data = "https://www.baidu.com"
qr.add_data(data=data)

# 启用二维码颜色设置
qr.make(fit=True)
img = qr.make_image(fill_color="green", back_color="white")

# 显示二维码
img.show()

生成二维码如下:

三、使用zxing识别二维码

3.1 zxing报错处理

google流行的是使用qrtools来读二维码,但是qrtools依赖zbar不兼容python3,其替代品zbarlight在windows安装又很麻烦,直接放弃了。
又回头折腾百度上流行的zxing,zxing一直报”python zxing OSError: [WinError 6] 句柄无效“,直接搜“if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:”。看到这篇文章说windows上报这个错可以直接“注释掉subprocess.py中的 _cleanup()方法”。虽然说的不是zxing,但库是一样的,姑且一试还真可以。

如下图所示,将_cleanup()直接注释掉:

image

3.2 zxing识别二维码代码

import zxing

reader = zxing.BarCodeReader()
barcode = reader.decode("baidu.jpg")
print(barcode.parsed)

3.3 运行示例

使用2.1中的代码生成并保存二维码,解析运行结果如下:

image

参考:

https://github.com/lincolnloop/python-qrcode

https://www.cnblogs.com/sfnz/p/5457862.html

https://github.com/dlenski/python-zxing

https://baijiahao.baidu.com/s?id=1586194723484285133&wfr=spider&for=pc

相关文章

  • iOS 花式二维码生成和二维码识别

    iOS 花式二维码生成和二维码识别 iOS 花式二维码生成和二维码识别

  • C# ZXing C# Zbar

    今天找了点时间看了一下二维码的识别和生成 1、ZXing可以直接识别和生成多种多种二维码 生成是有长宽可选用参数、...

  • Python3实现生成和识别二维码

    环境:python3 jdk1.8(没安装会报错:FileNotFoundError: [Errno 2] No ...

  • 二维码

    二维码 二维码的生成和读取-生成二维码:就是讲给定的信息,将其按照二维码的编码方式生成一张图片-读取二维码:识别二...

  • Swift(十一):QRScanner 二维码生成、识别、扫描

    一 、生成二维码 二 、识别二维码 三 、扫描二维码

  • 二维码

    1. 生成二维码 2.生成条形码 3.扫描二维码/条形码 4.相册选择识别二维码/条形码 5.长按识别二维码 给图...

  • 二维码

    前言 最近自己在写一个问卷调查的App,想要实现通过二维码的方式来分享一个问卷的功能,需要用到二维码生成和识别的相...

  • 二维码生成

    自从iOS7以来,苹果已经集成了二维码的生成和识别在CoreImage中 导入头文件 生成二维码 效果图 仔细一看...

  • Swift 3.0 二维码的扫描,识别与生成(带前景图片),

    用Swift 3.0写的微博,实现了二维码的生成,扫描与识别 项目已上传Github Github传送门代码已封...

  • 动态二维码闸机

    动态二维码闸机主要是指利用二维码这种识别方式来通行的通道闸机 二维码生成途径:手机随机生成电子二维码、访客机随机生...

网友评论

      本文标题:Python3实现生成和识别二维码

      本文链接:https://www.haomeiwen.com/subject/ppjddqtx.html