失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python学习之生成带logo背景图的二维码(静态和动态图)

Python学习之生成带logo背景图的二维码(静态和动态图)

时间:2023-10-11 11:31: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 库的更多介绍和源码访问 ​​ ​/x-hw/amazing-qr

模块安装问题

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

pip install MyQR

qrcode模块生成的二维码

注意:logo图不要

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

下面看实现代码:

from PIL import Imageimport qrcode, osdef create_qrcode(url, qrcodename):qr = qrcode.QRCode(version=1, # 设置容错率为最高error_correction=qrcode.ERROR_CORRECT_H, # 用于控制二维码的错误纠正程度box_size=8, # 控制二维码中每个格子的像素数,默认为10border=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.sizelogo_w,logo_h = logo.sizel_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()

效果图展示:

二维码图片违规,这里就不做展示了!

logo在二维码中间位置,不是背景图样式。

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

代码示例:

from MyQR import myqrimport ostext = input("请输入文本或url:")save_name = input("请输入生成二维码的名称:")+".png"myqr.run(words=text, #在命令后输入链接或者句子作为参数,然后在程序的当前目录中产生相应的二维码图片文件,默认命名为” qrcode.png“version=1, #设置容错率为最高默认边长是取决于你输入的信息的长度和使用的纠错等级;而默认纠错等级是最高级的Hlevel='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:存储路径

静态图展示

二维码图片违规,这里就不做展示了!

背景图样式,像是二维码镂空的感觉,额额额额呃呃…

动态图展示

二维码图片违规,这里就不做展示了!

可以用gif动图作为背景图样式,很高级的感觉,额额额额呃呃…

总结

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

如果觉得《Python学习之生成带logo背景图的二维码(静态和动态图)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。