Python生成简单二维码的代码示例

大家好,小编来为大家解答以下问题,用python制作二维码生成文字,python简单二维码生成代码,今天让我们一起来看看吧!

文章目录

  • 一、QR 码简介
  • 二、qrcode库简介
  • 1.简介
  • 2.前期准备
  • 三、改变样式
  • 1.生成中间带图片的二维码
  • 2.生成炫彩二维码
  • 一、QR 码简介

    先来看看一维码、二维码,然后深入了解一下QR码,简单点说QR码是二维码的一个种类!!!

    二维码(2-Dimensional Bar Code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。它是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息火车头采集器伪原创插件。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的信息。QR码呈正方形,常见的是黑白两色。在3个角落,印有较小,像“回”字的正方图案。这3个是帮助解码软件定位的图案,用户不需要对准,无论以任何角度扫描,数据仍然可以正确被读取。

    对于不同版本的二维码,容量也是不同的。理论上内容经过压缩处理后可以存7089个数字,4296 个字母和数字混合字符,2953个8位字节数据,1817个汉字;在上面我们看到,不同的Version的QR Code是不同的矩阵,Version版本越过,也就意味着容量越大。

    关于QR码的细节知识我们作为了解即可,今天主要学习如何使用python中的库生成我们想要的二维码,如果对此比较感兴趣可以点击这个传送门,进行深入学习!向大佬致敬。

    二、qrcode库简介

    1.简介

    qrcode模块是Github上的一个开源项目,提供了生成二维码的接口。qrcode默认使用PIL库用于生成图像。由于生成qrcode图片需要依赖Python的图像库,所以需要先安装Python图像库PIL(Python Imaging Library),在使用PIL库时,由于PIL有些更新,直接使用pip install PIL命令会报出以下错误ModuleNotFoundError: No module named 'PIL',可以改用以下命令安装上PIL库。

    pip install pillow
    

    常用的库函数:

  • add_data(str,optimize=20):添加要转换的文字到data参数; 如果使用了optimize优化参数,数据将被拆分为多个块来进行优化,以找到一个长度至少为这个值的足够简洁的方式来生成二维码。设置为"0”以避免优化。
  • make(fit=True):当fit参数为真或者没有给出version参数时,将会调用best_fit方法来找到适合数据的最小尺寸。
  • make_image(ill color=None, back_color=None,image_factory=None):创建二维码的图像并返回,默认为PIL图像。
  • 参数配置

  • version: 一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为 None 并使用 fit=True 参数即可。
  • error_correction: 二维码的纠错范围,可以选择4个常量:
    ··1. ERROR_CORRECT_L 7%以下的错误会被纠正
    ··2. ERROR_CORRECT_M (default) 15%以下的错误会被纠正
    ··3. ERROR_CORRECT_Q 25 %以下的错误会被纠正
    ··4. ERROR_CORRECT_H. 30%以下的错误会被纠正
  • boxsize: 每个点(方块)中的像素个数
  • border: 二维码距图像外围边框距离,默认为4,而且相关规定最小为4
  • 一般情况生成二维码的步骤:

  • 创建QRCode对象
  • add_data()添加数据
  • make_image()创建二维码(返回im类型的图片对象)
  • 自动打开图片,im.show()
  • 下面看一个例子:

    import qrcode
    
    data = 'http://www.baidu.com/'
    img_file = r'保存路径'
    
    # 实例化QRCode生成qr对象
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=4
    )
    # 传入数据
    qr.add_data(data)
    
    qr.make(fit=True)
    
    # 生成二维码
    img = qr.make_image()
    
    # 保存二维码
    img.save(img_file)
    # 展示二维码
    img.show()
    

    可以发现,通过调参,可以生成不同外观但存储信息相同的二维码:

    2.前期准备

    ModuleNotFoundError: No module named 'qrcode',如果出现这个错误的话,证明我们没有安装qrcode这个库,可以使用以下命令安装qrcode。然后导入使用!

    pip3 install qrcode
    

    安装好之后就可以快乐的生成二维码了!!!

    三、改变样式

    1.生成中间带图片的二维码

    效果如下图,实际上还是将信息藏在二维码中,只是改变了二维码的样式!!!

    用到的代码如下:

    import qrcode
    from PIL import Image
    import matplotlib.pyplot as plt
    
    
    def getQRcode(data, file_name):
        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=5,
            border=4,
        )
    
        # 添加数据
        qr.add_data(data)
        # 填充数据
        qr.make(fit=True)
        # 生成图片
        img = qr.make_image(fill_color="green", back_color="white")
    
        # 添加logo,打开logo照片
        icon = Image.open("1.jpg")
        # 获取图片的宽高
        img_w, img_h = img.size
        # 参数设置logo的大小
        factor = 6
        size_w = int(img_w / factor)
        size_h = int(img_h / factor)
        icon_w, icon_h = icon.size
        if icon_w > size_w:
            icon_w = size_w
        if icon_h > size_h:
            icon_h = size_h
        # 重新设置logo的尺寸
        icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
        # 得到画图的x,y坐标,居中显示
        w = int((img_w - icon_w) / 2)
        h = int((img_h - icon_h) / 2)
        # 黏贴logo照
        img.paste(icon, (w, h), mask=None)
        # 终端显示图片
        plt.imshow(img)
        plt.show()
        # 保存img
        img.save(file_name)
        return img
    
    
    if __name__ == '__main__':
        getQRcode("http://oj.aiecp.cn", 'my1.png')
    

    2.生成炫彩二维码

    生成之后大概就是这个样子!当然啦这个样式需要用到另外一个库myqr,直接使用pip install myqr下载即可,如果没有配置镜像源可能下载较慢!

    代码如下:

    from MyQR import myqr
    
    myqr.run(
        words='https://blog.csdn.net/apple_51931783?type=blog', # 扫描二维码后,显示的内容,或是跳转的链接
        version=5,# 设置容错率
        level='H',# 控制纠错水平,范围是L、M、Q、H,从左到右依次升高
        picture='1.gif',# 图片所在目录,可以是动图
        colorized=True, # 黑白(False)还是彩色(True)
        contrast=1.0, # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。
        brightness=1.0, # 用来调节图片的亮度,用法同上。
        save_name='Python.gif' # 控制输出文件名,格式可以是 .jpg, .png ,.bmp ,.gif
    )
    

    剩下的样式,大家在遇到之后或者对此很感兴趣可以自行查阅,只需简单的调参就可以获得灰常好看的二维码了。这里就不细说了!


    二维码的知识到这也就结束了,本篇博客介绍的较为基础了,炫彩的二维码也并不常用,所以大家好好掌握普通的二维码生成,在熟练之后逐步向复杂二维码迈进吧!!!

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python生成简单二维码的代码示例

    发表评论