首页 > 代码库 > 涛哥的Python脚本工具箱之生成带Logo的二维码

涛哥的Python脚本工具箱之生成带Logo的二维码

最近需要在二维码上加Logo,网上没有找到好用的,于是自己用python写了一个。需要安装qrcode,PIL库

二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于 1994 年发明。现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询、社交好友互动、网络地址访问等等。

安装 Python 的二维码库 -- qrcode

pip install qrcode

由于生成 qrcode 图片需要依赖 Python 的图像库,所以需要先安装 Python 图像库 PIL(Python Imaging Library),不然会遇到 "ImportError: No module named Image" 的错误。

代码如下:


#!/usr/bin/python
# -*- encoding: UTF-8 -*-
# test created on 14-10-28 下午12:48
# Copyright 2014 offbye@gmail.com


"""
生成带logo的二维码
"""

__author__ = ['"Xitao":<offbye@gmail.com>']

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=2,
        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__":
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">    gen_qrcode("http://offbye.com","qr.png", "logo.png")</span>



涛哥的Python脚本工具箱之生成带Logo的二维码