zoukankan      html  css  js  c++  java
  • 涛哥的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>



  • 相关阅读:
    Java 的Throwable、error、exception的区别
    最长回文子序列和最长回文子串
    牛客练习赛40 C-小A与欧拉路
    判断一棵树是否为二叉搜索树,完全二叉树和二叉平衡树
    Java语言的特点和特性
    设计模式
    联合索引和单列索引
    如何优化sql查询
    数据库的范式和约束
    数据库事务ACID和事务的隔离级别
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6795450.html
Copyright © 2011-2022 走看看