python 二维码的生成与解析

目录

文章目录

前言

一、二维码是什么?

二、使用步骤

1.qrcode库的使用

2.生成二维码

1.代码如下(示例):

2.生成带有图标的二维码

3.python解析二维码照片

总结

前言

学习二维码QR Code(Quick Response Code)的生成与解析。

一、二维码是什么?

二维码(二维条码)是指在一维条码的基础上扩展出的另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而长度没有记载数据。二维码的长度、宽度均记载着数据。二维码有一维条码没有的“定位点“和”容错机制“。容错机制使得在即使没有辨识到全部的条码或者条码有污损时也可以正确地还原条码上的信息。二维码的种类很多,不同的机构开发出的二维码具有不同的结构以及编写、读取方法。

这里我们学习的二维码是QR Code(Quick Response Code),学名为快速响应矩阵码,它是二维条码的一种。QR二维码目前在很多地方有着广泛的应用,例如通过微信二维码加好友、将应用软件的下载地址做成二维码,等等。

二、使用步骤

1.qrcode库的使用

安装qrcode库

qrcode库是用于生成二维码图像的python第三方库。库的安装步骤如下,在cmd中输入 

pip3 Install qrcode

查看安装信息:

pip show qrcode

 

2.生成二维码

导入qrcode模块后,make()函数返回一个qrcode.image.pil.PilImage对象,调用make()函数生成一个二维码图片对象,如下图所示,最后调用图片对象的save()函数就可以将生成的二维码保存下来。

1.代码如下:

import qrcode
img=qrcode.make("hello,world!")
img.save('hello.png')

结果如下 

 

2.生成带有图标的二维码

事先准备一个logo图标,使用下面的程序生成带有logo图标的二维码。

logo如下:

import qrcode
from PIL import Image
import os, sys

def gen_qrcode(string,path,logo=""):

    '''
    生成中间带logo的二维码
    需要安装qrcode、PIL库
    @参数string:二维码字符串
    @参数path:生成的二维码保存路径
    @参数logo:logo文件路径
    @return:None
    '''
    #初步生成二维码图像
    qr=qrcode.QRCode(
    version=2,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=8,
    border=1
    )
    qr.add_data(string)
    qr.make(fit=True)
    #获得Image实例并把颜色模式转换为RGBA
    img=qr.make_image()
    img=img.convert("RGBA")
    if logo and os.path.exists(logo):
        try:
            icon=Image.open(logo)#打开填充的logo文件
            img_w,img_h=img.size
            #print(img_w,img_h)
        except Exception as e:
            print (e)
            sys.exit(1)
        factor=4
        #计算logo的尺寸
        size_w=int (img_w/factor)
        size_h=int (img_h/factor)
        #比较并重新设置logo文件的尺寸
        icon_w,icon_h=icon.size
        if icon_w>size_w:
            icon_w=size_w
        if icon_h>size_h:
            icon_h=size_h
        icon=icon.resize((icon_w,icon_h),Image.Resampling.LANCZOS)
        #计算logo的位置,并复制到二维码图像中
        w=int ((img_w-icon_w)/2)
        h=int ((img_h-icon_h)/2)
        icon=icon.convert("RGBA")
        img.paste(icon,(w,h),icon)#作用为将一张图片覆盖到另一张图片的指定位置去
        #保存二维码
        img.save(path) #例如qrcode.png
       
if __name__=="__main__":
    info='强风吹拂'
    pic_path="qrcode.png"#生成的带有图标的二维码图片,如下图
    logo_path="灰二.png"#用于填充的图标
    gen_qrcode(info,pic_path,logo_path)
    

结果:

 

3.python解析二维码照片

解析二维码图片信息需要安装pyzbar库,安装如下

pip install pyzbar

代码如下:

from PIL import Image
import pyzbar.pyzbar as pyzbar

def decode_qrcode(img):
    barcodes = pyzbar.decode(img)
    for barcode in barcodes:
        barcodeData = barcode.data.decode("utf-8")
        print(barcodeData)
    return None

if __name__=="__main__":
    img = Image.open(img_path)#打开二维码图片路径
    decode_qrcode(img)

总结

以上就是今天要讲的内容,本文仅仅简单介绍了利用python生成与解析二维码。

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值