python实现生成带Logo的二维码

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

qrcode 官网介绍:https://pypi.python.org/pypi/qrcode/5.1

安装 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>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值