如何用【Python】制作一个二维码生成器
前言
二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方
式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。现在的二维码随处可见,甚至有人觉得在以后的墓
碑上都可以刻一个二维码,通过扫描该二维码便可知墓主传奇的一生。所以如何快速定制自己的二维码便显得极为的重要,本文
用python生成一个简单的二维码生成器,该生成器可以定制二维码的背景、填充颜色以及二维码中间的背景图片。
1、安装第三方库
Python学习交流Q群:906715085###
win+R,输入cmd,进入系统管理员界面,安装第三方库
pip install qrcode
pip install pillow #PIL的派生分支,python3以上PIL的替代库
注:PIL是python重要的图像库,在给二维码加图片时需要用到它,但安装时出现:ERROR: Could not find a version that
satisfies the requirement PIL (from versions: none)错误。原来是python3以上该库就用其他的库(pillow)替代了
2、QRCode参数解释
version:值为1~40的整数,控制二维码的大小(最小值是1,是个12×12的矩阵)。如果想让程序自动确定,将值设置为 None,
并使用 fit 参数即可。error_correction:指定二维码的容错系数,分别有以下4个系数:
•ERROR_CORRECT_L: 7%的字码可被容错
•ERROR_CORRECT_M: 15%的字码可被容错
•ERROR_CORRECT_Q: 25%的字码可被容错
•ERROR_CORRECT_H: 30%的字码可被容错
box_size:控制二维码中每个小格子包含的像素数。border:控制边框(二维码与图片边界的距离)包含的格子数(默认为4,是
相关标准规定的最小值)
3、自定义二维码生成器
生成一个窗口,可以在输入框中自定义二维码的相关信息,包括想输入的文本(可以是文字或者网址),填充颜色以及背景颜
色。代码如下:
########
Python学习交流Q群:906715085###
if __name__ == '__main__':window = tk.Tk()window.title('二维码生成器')window.geometry('900x600')label_url = tk.Label(window, text="输入文本:")label_url.place(x=50, y=40)Entry_input_url = tk.Entry()Entry_input_url.place(x=120, y=40)label_fill_color = tk.Label(window, text="填充颜色:")label_fill_color.place(x=50, y=80)Entry_input_fill_color = tk.Entry()Entry_input_fill_color.place(x=120, y=80)label_fill_color = tk.Label(window, text="背景颜色:")label_fill_color.place(x=50, y=120)Entry_input_back_color = tk.Entry()Entry_input_back_color.place(x=120, y=120)button = tk.Button(window, text='开始生成', command=create_code)button.place(x=140, y=160)window.mainloop()
结果如下:
4、给二维码加图片
Python学习交流Q群:906715085###
# 给二维码加图片# 把颜色模式转换为RGBA,它表示带透明度掩模的真彩色img = img.convert("RGBA")# 从文件里加载二维码中心logo图片,用Image函数的open方法icon = Image.open("2.jpg")# 得出二维码的宽高img_w, img_h = img.sizefactor = 4# 通过二维码宽高计算出logo图片宽和高的最大限度size_w = int(img_w / factor)size_h = int(img_h / factor)# 获取logo的宽和高icon_w, icon_h = icon.size# 比较logo宽高和最大限度宽高,如果超过最大限度就将logo尺寸调整到最大限度if icon_w > size_w:icon_w = size_wif icon_h > size_h:icon_h = size_hicon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)# 根据logo和图片的长宽确定logo的位置w = int((img_w - icon_w) / 2)h = int((img_h - icon_h) / 2)icon = icon.convert("RGBA")# 将logo图片粘贴到二维码的指定位置img.paste(icon, (w, h), icon)
5、全部代码
import qrcode
import tkinter as tk
from PIL import Imagedef create_code():content = Entry_input_url.get()fill_color = Entry_input_fill_color.get()back_color = Entry_input_back_color.get()qr = qrcode.QRCode(version=2, # 二维码的边长# ERROR_CORRECT_H: 30%的字码可被容错,因为插入了图片,所以增加容错率error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=6,border=2,)qr.make(fit=True)qr.add_data(content)img = qr.make_image(fill_color=fill_color, back_color=back_color)# 给二维码加图片# 把颜色模式转换为RGBA,它表示带透明度掩模的真彩色img = img.convert("RGBA")# 从文件里加载二维码中心logo图片,用Image函数的open方法icon = Image.open("2.jpg")# 得出二维码的宽高img_w, img_h = img.sizefactor = 4# 通过二维码宽高计算出logo图片宽和高的最大限度size_w = int(img_w / factor)size_h = int(img_h / factor)# 获取logo的宽和高icon_w, icon_h = icon.size# 比较logo宽高和最大限度宽高,如果超过最大限度就将logo尺寸调整到最大限度if icon_w > size_w:icon_w = size_wif icon_h > size_h:icon_h = size_hicon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)# 根据logo和图片的长宽确定logo的位置w = int((img_w - icon_w) / 2)h = int((img_h - icon_h) / 2)icon = icon.convert("RGBA")# 将logo图片粘贴到二维码的指定位置img.paste(icon, (w, h), icon)# 保存二维码img.save("qr.png")photo = tk.PhotoImage(file="qr.png")Label_img = tk.Label(window, image=photo)Label_img.place(x=300, y=300)if __name__ == '__main__':window = tk.Tk()window.title('二维码生成器')window.geometry('900x600')label_url = tk.Label(window, text="输入文本:")label_url.place(x=50, y=40)Entry_input_url = tk.Entry()Entry_input_url.place(x=120, y=40)label_fill_color = tk.Label(window, text="填充颜色:")label_fill_color.place(x=50, y=80)Entry_input_fill_color = tk.Entry()Entry_input_fill_color.place(x=120, y=80)label_fill_color = tk.Label(window, text="背景颜色:")label_fill_color.place(x=50, y=120)Entry_input_back_color = tk.Entry()Entry_input_back_color.place(x=120, y=120)button = tk.Button(window, text='开始生成', command=create_code)button.place(x=140, y=160)window.mainloop()
6、最后
今天的分享到这里就结束了,喜欢的小伙伴记得点赞收藏,有问题的小伙伴记得评论留言,一般看见都会回复的。
如何用【Python】制作一个二维码生成器相关推荐
- 如何用python制作动态二维码,提升表白成功率?
来源:凹凸数据 本文约1000字,建议阅读5分钟. 本文教你用python制作动态二维码,助你表白成功! 关注数据派THU(DatapiTHU)后台回复"20200520"获取完整 ...
- 如何用python制作动态二维码,来哄女朋友开心?
1 前言 在如今信息发达的时代,二维码已经是人们生活中不可或缺的东西.比如几乎每天都要vb.net教程 用的微信或支付宝支付.那么如何可以制作一个二维码呢?小编将在本文中给大家分享一个自制的二维码生成 ...
- 前端: 如何利用Qrcode制作一个二维码生成器?
玲琅满目的二维码在我们的都市和朋友圈中随处可见, 很多平台都提供了定制二维码的服务, 那么作为一名程序员, 我们如何自己实现一个简单的二维码生成器呢? 接下来笔者就来带大家一起利用Qrcode实现一个 ...
- 使用python创建一个二维码生成器
QR codes are everywhere more and more businesses are using them to link to user manuals for products ...
- 【Python爬虫】用Python爬虫做一个二维码生成器,20行代码轻松实现
python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询.cmd版的实时翻译.快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给大家分享一个 ...
- 用python爬虫做一个二维码生成器
python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询.cmd版的实时翻译.快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给大家分享一个 ...
- python可视化迷宫求解_如何用 Python 制作一个迷宫游戏
相信大家都玩过迷宫的游戏,对于简单的迷宫,我们可以一眼就看出通路,但是对于复杂的迷宫,可能要仔细寻找好久,甚至耗费数天,然后可能还要分别从入口和出口两头寻找才能找的到通路,甚至也可能找不到通路. 虽然 ...
- 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...
玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?(当然用外挂不是那么道义哈,呵呵),那我们就来看一下如何用python来制作一个外挂.... 我打开了4399小游 ...
- 手把手教你如何用Python制作一个电子相册?末附python教程
这里简单介绍一下python制作电子相册的过程,主要用到tkinter和pillow这2个库,tkinter用于窗口显示照片,pillow用来处理照片,照片切换分为2种方式,一种是自动切换(每隔5秒) ...
最新文章
- CentOS6.5 gcc升级到4.8.2
- oracle 动态游标行数,oracle动态游标的简单实现方法
- 【PL/SQL】学习笔记 (1)一个简单的PL/SQL程序
- Mongodb3.4 复制集及分片配置
- 网络管理与维护作业4
- 写入img虚拟软盘镜像_codestorm_新浪博客
- ultracompare中文乱码解决方法
- VR全景智慧城市虚拟现实三维的发展
- 【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?
- ktt算法 约化_矩阵特征与特征向量的计算
- 你既言而无信,我即出尔反尔
- 如何为勒索软件攻击做准备?
- BufferedInputStream。。。。。。。BufferedReader和BufferedWriter
- mantis 重启mysql_机器突然重启导致Mantis错误
- linux 画面好 游戏,2017年13款画面最优秀的游戏!极致画面美到惊叹
- 英格兰的政治+德意志的工业科技+犹太的金融+北美的丰富资源=世界NO.1强国
- Alpine 安装 MySQL
- 高性能mysql学习笔记--索引
- 留几手:互联网创业到底是咋回事(说得真经典,创业者不创业的都值得一看)
- 知识蒸馏(Distillation)
热门文章
- SE,SA和RD都代表什么
- 电子计算机的产品情况,广东省市场监督管理局关于2020年度广东省电子计算机配套产品及耗材产品质量监督抽查情况的通告...
- jQuery实现五星好评
- 科密指纹考勤机B329采集
- Altium Designer -- EMC/EMI电路设计经验
- python pandas 数据分析-读取csv excel
- TextView.setText()为什么会出错
- 分布式锁-Redis解决方案和Redisson解决方案
- PCM开发板模块实验指导--有刷直流马达正反转实验
- sql分组 会计分录_oracle\EBS\常用表\视图\会计分录\mtl_serial_numbers\总账