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!

posted @ 2018-02-08 16:09  北京流浪儿  阅读(492)  评论(0编辑  收藏  举报