zoukankan      html  css  js  c++  java
  • python生成二维码

               python之所以强大,就是因为他有强大的类库,无论是用于数据分析还是科学计算、以及应用于web开发等等。

    还有就是简洁的语言,(本人一直觉得如果用简单通俗的语言能讲明白一个复杂的道理,说明你已经对这件事彻底的理解了)。

    python就这样语言,能用简洁的代码,实现复杂的功能,并且还易于理解和掌握,不过无论用什么语言编程,最后都是玩

    的思想....
    今天就给大家说说python生成当下比较流行的二维码。

    1、首先你需要安装两个类库

        pip install qrcode  #是个用来生成二维码图片的第三方模块,依赖于 PIL 模块

      pip install pillow 

    2、以下就是简单的代码,如果内容没有超过2331(我自己测试的最大长度,不知道网上为什么说是1108)。

    生成二维码图片后直接用手机扫码看内容

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import qrcode
    str_data = '''
    这里是二维码内容测试,内容的最大长度2331
    '''
    print len(str_data)
    
    img = qrcode.make(str_data)
    img.save('/Users/gide/Downloads/erweima.jpg')
    

     3、下面是更完整的带logo的二维码封装代码。我们生成一个直接搜索图书的二维码

    logo图片

      

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    """
    生成带logo的二维码
    """
    import qrcode
    from PIL import Image
    import os
    
    def gen_qrcode(string, path, logo=""):
        """
        生成中间带logo的二维码
        需要安装qrcode, PIL库
        :param string: 二维码字符串
        :param path: 生成的二维码保存路径
        :param logo: logo文件路径
        :return:
        """
        qr = qrcode.QRCode(
            version=6,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=8,
            border=1
        )
        qr.add_data(string)
        qr.make(fit=True)
    
        img = qr.make_image()
        img = img.convert("RGBA")
    
        if logo and os.path.exists(logo):
            icon = Image.open(logo)
    
            img_w, img_h = img.size
            factor = 4
            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
            icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
    
            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)
    
    if __name__ == "__main__":
       gen_qrcode('http://www.kindlepush.com/search/?sKey=%E6%B0%91%E5%9B%BD%E5%BA%95%E8%89%B2',"/Users/gide/Downloads/erweima.png","logo.jpg")
    

     

    参数说明:

      参数 version 说明:
      表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码,
      version 每增加 1,生成的二维码就会添加 4 尺寸,
      例如 version 是 2,则生成 25 * 25 的二维码。
      参数 error_correction 指定二维码的容错系数,分别有以下4个系数:
      1.ERROR_CORRECT_L: 7%的字码可被容错
      2.ERROR_CORRECT_M: 15%的字码可被容错
      3.ERROR_CORRECT_Q: 25%的字码可被容错
      4.ERROR_CORRECT_H: 30%的字码可被容错
      参数 box_size 表示二维码里每个格子的像素大小。
      参数 border 表示边框的格子厚度是多少(默认是4)。
      运行代码后,会在代码的当前目录下生成一个erweima.png的二维码,用手机扫一下就可以直接跳转到搜索图书的页面了。

    所以现在共享单车上贴的二维码其实就是个请求地址,你扫码后会发送参数请求他们的服务器,在服务端进行一系列验证后,就会

    启动开锁功能。当然ofo这种单车刚开始很可能就是直接把实现生成好的随机数,返回给你一个,然后你可以使用了。当然真正实际

    应用中会比较复杂。

    OVER!

  • 相关阅读:
    第6章 LVM详解
    第5章 Linux上管理文件系统
    第4章 ext文件系统机制原理剖析
    第3章 Linux上文件的权限管理
    第2章 系统用户/组管理(2) su和sudo
    第2章 细说Linux系统用户/组管理(1)
    cpio用法详细说明
    Linux find运行机制详解
    第1章 Linux文件类基础命令
    PXE+kickstart无人值守安装CentOS 6
  • 原文地址:https://www.cnblogs.com/gide/p/8432007.html
Copyright © 2011-2022 走看看