【Python项目实践】生成带有图标的二维码

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

通过以下实例来体会Python对二维码的处理:

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
        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.ANTIALIAS)
        #计算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=" http://www.ybu.edu.cn "
    pic_path="qrcode.png"   #生成带有图标的二维码
    logo_path="logo.png"    #用于填充的图标
    gen_qrcode(info, pic_path,logo_path)

通过以上代码我们可以大概了解二维码生成及其基本运用,然而要想更加做出具有创造性的代码还需要继续加之练习。

你可能感兴趣的:(Python项目实践,python,opencv,tensorflow,大数据,后端)