用python生成带logo的二维码

作者:清一

类别:python基础   

发布时间:2019/06/28 09:54:00   更新时间:2019/06/28 09:58:19


今天,分享一下,如何用python生成带logo的二维码。

如果说,大家想要生成一个简单的二维码,那完全没必要大动干戈用程序。直接百度一个生成二维码网站,生成一个就好了。
文字、网址、文件、……什么都可以。

但是,要生成一个带logo的漂亮的二维码,可以参考下本文。。。

我的写作风格是,一行一行给代码加注释。。。

python的注释用#
更多的说明,用【】,这个在代码运行里得删除。



# -*- coding: utf-8 -*-

#pip install qrcode
import qrcode
#pip install pillow
from PIL import Image

【安装qrcode和pillow两个库,并引用。】

def make_qrcode():
    qr = qrcode.QRCode(
        version = 1, #控制二维码尺寸1-40
        error_correction = qrcode.constants.ERROR_CORRECT_H, #控制二维码纠正错误的程度。
        box_size = 8, #控制二维码每个格子的像素值。默认10。
        border = 4  #控制边框包含的格子数。默认4。

    )

   【生成一个qr实例。】

    #添加二维码数据
    qr.add_data("https://www.pyfield.com/")
    #生成二维码图片
    qr.make(fit=True)
    #设置填充色和背景色
    img = qr.make_image(fill_color="black", back_color="white")
    img = img.convert("RGBA")

   【生成一个img,并转RGBA模式,转这个模式很重要,没有这一句,后边的logo的彩色会丢失,称为黑白的。】

    #打开logo文件
    icon = Image.open("pyfield_logo.png")

   【西安用ps或者其它作图软件,把要加入的logo处理好。——注意用自己创作或者拍摄的原图改,省的有图片侵权问题。】
    【要注意一点,一般来说,把图片的白色背景留下,如果白色背景全部去掉,图形和二维码颜色就混在一起了。
      除非比较简单封闭的logo,否则这样不好看。】

    #计算logo的尺寸
    img_w, img_h = img.size
    factor = 4
    size_w = int(img_w / factor)
    size_h = int(img_h / factor)

    #比较并重新设置logo文件的尺寸
    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)

    #计算logo的位置,并复制到二维码图像中
    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.show()

    #保存二维码
    img.save('qr.png')


if __name__ == '__main__':
    make_qrcode()

【运行文件,将产生带彩色logo的二维码。】

【大家可以看看本站最下方的,蟒域网网址二维码,大体就是这个样子。】


本文属于原创文章,未经许可,任何媒体、公司或个人不得刊发或转载。

本文网址:https://www.pyfield.com/blog/?id=12