python3中如何对二维码QRcode进行编码解码
通常对于二维码,我们需要进行两种操作:
- 将二维码图片扫描后解析成字符串
- 将字符串编码生成二维码图片
这是两个逆过程,在python2中,我们可以通过zbar这个第三方库实现两个功能。可以zbar并不支持python3,而且,zbar在window平台上的安装极其繁琐,有很多坑。
所以想通过python3处理二维码的过程中,查了很多资料。目前比较好的解决办法如下:
用pyzbar代替zbar解析二维码
安装:
pip install pyzbar
这是可能的,因为pyzbar是一个围绕zbar库的基于ctypes的包装器,它包含在dll和Windows Python的轮子中。
使用:
网络上二维码图片解析
import requests
import array
from PIL import Image
from io import BytesIO
from pyzbar.pyzbar import decode
# decode_result的格式是[Decoded(data='****',……)],列表里包含一个nametuple
def decode_qrcode(url)
decode_result = decode(Image.open(BytesIO(requests.get(urls, headers=HEADERS).content))
return str(decode_result[0].data, encoding='utf-8')
本地二维码图片解析
from PIL import Image
from pyzbar.pyzbar import decode
def decode_qrcode(url)
decode_result = decode(Image.open('filename'))
return str(decode_result[0].data, encoding='utf-8')
更详细用法参见release页面
下载zbar.exe文件并安装,通过系统命令行调用来解码
下载地址:zbar-0.10-setup.exe
说明:
使用:
import os
os.system(r'C:\zbarimg.exe -d d:\Winapps\Zbar\Examples\barcode.png')
Linux平台上qrtools解码
注:这个方法我没用过。
安装:
sudo apt-get install python-qrtools
使用:
import qrtools
qr = qrtools.QR()
qr.decode("horn.png")
print qr.data
用PyQRCode来生成二维码
安装:
pip install pyqrcode
用法:
import pyqrcode
url = pyqrcode.create('http://uca.edu')
url.svg('uca-url.svg', scale=8)
说明: pyqrcode具有完善的帮助文档和强大的功能,可以快速生产二维码图片,细节参考:
其他值得关注的内容
qreader是一个正在开发中的项目,使用纯Python编写的二维码解析库,不依赖zbar。感兴趣的可以去提交PR。
免费的二维码编码解码API接口
http://api.qrserver.com/
Send a GET request of following form to our system to decode a QR code graphic (=to read a QR code from the web): http(s)://api.qrserver.com/v1/read-qr-code/?fileurl=[URL-encoded-webaddress-url-to-qrcode-image-file]
http://www.7xiwang.com/Tools/Index
解码api:http://www.7xiwang.com/WebService/QRCodeDecode
api参数:base64img
api请求类型:HttpPost
参数数据格式(JSON):{"base64img":""}
api返回数据格式(JSON):
请求成功:{"status":"1","text":""}
请求失败:{"status":"0","Msg":"错误信息"}