【python】生成二维码(带logo图标)

我们用以下例题来引入

题目要求:生成带有图标的二维码,图标为自己设置的照片,扫描后打开某个网站。(如平顶山学院的网站http://www.pdsu.edu.cn)

在编程之前,我们需要安装pillow和qrcode库;

方法一:打开cmd,利用

pip install pillow

命令安装。(安装qrcode库同上)

方法二:

打开pycharm——>File——>Settings,如下图,在

点击+号后在上方搜索需要安装的库(如图

 

(我这里已经安装过了)

然后开始编写程序

import qrcode
from PIL import Image
import os, sys
def gen_qrcode(string, path, logo=""):
    """
    生成中间带logo的二维码
    需要安装qrcode, PIL库
    @参数 string: 二维码字符串
    @参数 path: 生成的二维码保存路径
    @参数 logo: logo文件路径
    @return: None
    """
    # 初步生成二维码图像
    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)
    # 互动二Image实例并把颜色模式转换成RGBA
    img = qr.make_image()
    img = img.convert("RGBA")
    if logo and os.path.exists(logo):
        try:
            icon = Image.open(logo)    #打开logo文件
            img_w, img_h = img.size
        except Exception as e:
            print(e)
            sys.exit(1)
        factor = 4
        #计算logo尺寸
        size_w = int(img_w / factor)
        size_h = int(img_h / factor)
        #比较并重新设置logo文件(图片pdsu.png)的尺寸
        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.save(path)           #保存二维码qr.png
    # 调用系统命令打开图片
    os.system('start %s' % path)


if __name__ == "__main__":
    info = "http://www.pdsu.edu.cn"
    pic_path = "qr.png"      #生成带有图标的二维码
    icon_path = "pdsu.png"   #用于填充的图标
    gen_qrcode(info, pic_path, icon_path )

效果图:(我添加的是一个学校的官网图,如下)

 

需要代码段部分都有注释,其实生成二维码部分很简单,添加logo图标主要需要计算尺寸,计算logo位置,但是这些可以套用,初步学习的时候可以直接套用,在最后填充部分选择自己想要添加的图片即可。

还有一点就是扫描后需要打开的一个网页,前期可以用百度了什么的网址,后期可以自己编写网页哦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值