Python实现生成带logo背景图的二维码

 更新时间:2023年05月17日 10:20:14   作者:逃逸的卡路里  
这篇文章主要为大家详细介绍了如何利用Python实现生成带logo背景图的二维码(静态和动态图),文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

前言

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

尽管二维码应用渐趋广泛,但与日韩等国相比,中国的二维码发展还远远不够。制约因素除了运营商的支持度外,还有技术、终端适配、盈利模式等方面。炒得很火热的是二维码与O2O(Online To Offline)模式的结合,即利用二维码的读取将线上的用户引流给线下的商家。腾讯很看好这个模式,马化腾称"二维码是线上线下的一个关键入口"。尽管有些人不看好二维码的应用,但无可否认,只要培养了足够多的用户群,再结合良好的商业模式,二维码将成为桥接现实与虚拟最得力的工具之一。

Python代码是怎么生成二维码的

这里介绍两种方法:

1、qrcode模块

qrcode模块是Github上的一个开源项目,提供了生成二维码的接口。qrcode默认使用PIL库用于生成图像。由于生成 qrcode 图片需要依赖 Python 的图像库,所以需要先安装 Python 图像库 PIL(Python Imaging Library)。

2、MyQR模块

MyQR是一个能够产生基本二维码、艺术二维码(黑白与彩色)和动态效果二维码(黑白与彩色)的Python第三方库。
MyQR 库的更多介绍和源码访问 ​​ ​https://github.com/x-hw/amazing-qr

模块安装问题

运行代码报错:ModuleNotFoundError: No module named ‘MyQR’

pip install MyQR

qrcode模块生成的二维码

注意:logo图不要

太大,不然生成之后logo可能会挡住二维码的内容,导致扫不出来。

下面看实现代码:

from PIL import Image
import qrcode, os

def create_qrcode(url, qrcodename):
    qr = qrcode.QRCode(
        version=1,  # 设置容错率为最高
        error_correction=qrcode.ERROR_CORRECT_H,  # 用于控制二维码的错误纠正程度
        box_size=8,  # 控制二维码中每个格子的像素数,默认为10
        border=1,  # 二维码四周留白,包含的格子数,默认为4
    )

    qr.add_data(url)  # QRCode.add_data(data)函数添加数据
    qr.make(fit=True)  # QRCode.make(fit=True)函数生成图片

    img = qr.make_image()
    img = img.convert("RGBA")  # 二维码设为彩色
    logo = Image.open("images/逃逸的卡路里.png")  # 传gif生成的二维码也是没有动态效果的

    w,h = img.size
    logo_w,logo_h = logo.size
    l_w = int((w - logo_w) / 2)
    l_h = int((h - logo_h) / 2)
    logo = logo.convert("RGBA")
    img.paste(logo, (l_w, l_h), logo)
    img.show()
    img.save(os.getcwd() + "/images/" + qrcodename + ".png", quality=100)

def main():
    url = input("请输入文本或URL:")
    qrcodename = input("请输入生成二维码的名称:")
    create_qrcode(url,qrcodename)
if __name__ == '__main__':
    main()
参数详解
version=None一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为 None 并使用 fit=True 参数即可
error_correction=constants.ERROR_CORRECT_M二维码的纠错范围,可以选择4个常量:1. ERROR_CORRECT_L 7%以下的错误会被纠正2. ERROR_CORRECT_M (default) 15%以下的错误会被纠正3. ERROR_CORRECT_Q 25 %以下的错误会被纠正4. ERROR_CORRECT_H. 30%以下的错误会被纠正
box_size=10控制二维码中每个小格子包含的像素数
border=4控制边框(二维码与图片边界的距离)包含的格子数(默认为4,是相关标准规定的最小值)
image_factory=None选择生成图片的形式,默认为PIL图像
mask_pattern=None选择生成图片的的掩模

MyQR模块生成静态或动态背景的二维码

from MyQR import myqr
import os

text = input("请输入文本或url:")
save_name = input("请输入生成二维码的名称:")+".png"

myqr.run(
    words=text, #在命令后输入链接或者句子作为参数,然后在程序的当前目录中产生相应的二维码图片文件,默认命名为” qrcode.png“
    version=1,  #设置容错率为最高默认边长是取决于你输入的信息的长度和使用的纠错等级;而默认纠错等级是最高级的H
    level='H',  #控制纠错水平,范围是L、M、Q、H,从左到右依次升高
    picture="images/逃逸的卡路里.png",  #用来将QR二维码图像与一张同目录下的图片相结合,产生一张黑白图片
    colorized=True, #可以使产生的图片由黑白(False)变为彩色(True)的
    contrast=1.0, #用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0。
    brightness=1.0, #用来调节图片的亮度,其余用法和取值与 -con 相同
    save_name=save_name,    #控制文件名,格式可以是 .jpg, .png ,.bmp ,.gif ;
    save_dir=os.getcwd() + "/images/"
)

参数:

  • words:文本或链接
  • version:改变生成二维码图片的大小;范围(1~40)
  • picture: 指定生成二维码的背景图
  • colorized:只有两个参数,True为彩色,Flase为灰色
  • level :范围只有:‘L’,‘M’,‘Q’,‘H’;控制纠错水平
  • contrast :调节背景图片的对比度,只能给予float类型的参数
  • brightness:调节背景图片的亮度,如果参数值过大,背景图将会变为白色;只能给予float类型的参数
  • save_name:保存的格式只有:’.jpg’,‘.png’, ‘.bmp’, '.gif’等四种格式,路径可以使用绝对路径和相对路径。
  • save_dir:存储路径

动态图展示

总结

以上就是Python代码对二维码生成处理的示例,根据不同需求可以选择qrcode模块或者MyQR模块来实现,希望对看到的小伙伴有帮助作用。

到此这篇关于Python实现生成带logo背景图的二维码的文章就介绍到这了,更多相关Python生成二维码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python应用实现双指数函数及拟合代码实例

    Python应用实现双指数函数及拟合代码实例

    这篇文章主要介绍了Python应用实现双指数函数及拟合代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python开发加薪利器之Docker的使用实践

    Python开发加薪利器之Docker的使用实践

    docker利用容器技术,独立运行一个或者一组应用,docker是基于go语言开发,docker镜像好比是一个模版,可以通过这个模版来创建容器服务,今天通过本文给大家分享Docker的使用实践,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • python实现哈希表

    python实现哈希表

    介绍一个用python实现的哈希表,处理冲突的方法是开放地址法,冲突表达式为Hi=(H(key)+1)mod m,m为表长。迟点再实现更难的拉链法
    2014-02-02
  • python base64 decode incorrect padding错误解决方法

    python base64 decode incorrect padding错误解决方法

    这篇文章主要介绍了python base64 decode incorrect padding错误解决方法,本文使用把string补齐等号的方法解决了这个错误,需要的朋友可以参考下
    2015-01-01
  • Python + selenium 自动化测试框架详解

    Python + selenium 自动化测试框架详解

    这篇文章主要为大家介绍了Python + selenium 自动化测试框架,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 详解PyQt5中textBrowser显示print语句输出的简单方法

    详解PyQt5中textBrowser显示print语句输出的简单方法

    这篇文章主要介绍了详解PyQt5中textBrowser显示print语句输出的简单方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题

    解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题

    这篇文章主要介绍了解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python3 中时间戳、时间、日期的转换和加减操作

    python3 中时间戳、时间、日期的转换和加减操作

    这篇文章主要介绍了python3 中时间戳、时间、日期的转换和加减操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python中max函数用于二维列表的实例

    Python中max函数用于二维列表的实例

    下面小编就为大家分享一篇Python中max函数用于二维列表的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 关于python3安装pip及requests库的导入问题

    关于python3安装pip及requests库的导入问题

    小编最近快毕业了,闲着无事学习下python的内容在学习到requsets库的导入问题时遇到一些问题,通过查找相关资料问题顺利解决,今天小编把问题解决思路及注意事项分享给大家供大家参考学习
    2021-05-05

最新评论