基于Python编写一个二维码生成器

目录
  • 前言
  • 1、安装第三方库
  • 2、QRCode参数解释
  • 3、自定义二维码生成器
  • 4、给二维码加图片
  • 5、全部代码

前言

二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。现在的二维码随处可见,甚至有人觉得在以后的墓碑上都可以刻一个二维码,通过扫描该二维码便可知墓主传奇的一生。所以如何快速定制自己的二维码便显得极为的重要,本文用python生成一个简单的二维码生成器,该生成器可以定制二维码的背景、填充颜色以及二维码中间的背景图片。

1、安装第三方库

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、自定义二维码生成器

生成一个窗口,可以在输入框中自定义二维码的相关信息,包括想输入的文本(可以是文字或者网址),填充颜色以及背景颜色。代码如下:

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、给二维码加图片

# 给二维码加图片
    # 把颜色模式转换为RGBA,它表示带透明度掩模的真彩色
    img = img.convert("RGBA")
    # 从文件里加载二维码中心logo图片,用Image函数的open方法
    icon = Image.open("2.jpg")
    # 得出二维码的宽高
    img_w, img_h = img.size
    factor = 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_w
    if icon_h > size_h:
        icon_h = size_h
    icon = 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、全部代码

window.mainloop()

import qrcode
import tkinter as tk
from PIL import Image
 
 
def 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.size
    factor = 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_w
    if icon_h > size_h:
        icon_h = size_h
    icon = 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)

到此这篇关于基于Python编写一个二维码生成器的文章就介绍到这了,更多相关Python二维码生成器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于python实现可视化生成二维码工具

    环境 pip install gooey pip install MyQR 源代码 from gooey import GooeyParser,Gooey from MyQR import myqr @Gooey(encoding='utf-8',program_name='二维码生成器',program_description='生成动态.彩色.黑白二维码',language='chinese') def main(): parser = GooeyParser(description="生成

  • Python使用QRCode模块生成二维码实例详解

    Python使用QRCode模块生成二维码 QRCode官网 https://pypi.python.org/pypi/qrcode/5.1 简介 python-qrcode是个用来生成二维码图片的第三方模块,依赖于 PIL 模块和 qrcode 库. 简单用法 import qrcode img = qrcode.make('hello, qrcode') img.save('test.png') 高级用法 import qrcode qr = qrcode.QRCode( version=1

  • python生成二维码的实例详解

    python生成二维码的实例详解 版本相关 操作系统:Mac OS X EI Caption Python版本:2.7 IDE:Sublime Text 3 依赖库 Python生成二维码需要的依赖库为PIL和QRcode. 坑爹的是,百度了好久都没有找到PIL,不知道是什么时候改名了,还是其他原因,pillow就是传说中的PIL. 安装命令:sudo pip install pillow.sudo pip install qrcode 验证是否安装成功,使用命令from PIL import

  • 基于Python实现在线二维码生成工具

    目录 1.环境搭建 2.二维码生成功能的封装 3.网页应用的搭建 在今天的教程中,费老师我将为大家展示如何通过纯Python编程的方式,开发出一个网页应用,从而帮助用户直接通过浏览器访问,即可基于输入的网址等文字内容,完成常规二维码.静态底图二维码以及动图底图二维码的快捷生成,先来看一看应用的主要功能操作演示: 只写Python开发这样精致的工具应用非常简单,下面我来带大家从搭建环境开始,学习整个过程: 1.环境搭建 首先我们来创建应用的虚拟开发环境,建议使用Conda,命令如下: 创建虚拟环境

  • Python一行代码实现生成和读取二维码

    目录 生成二维码 读取二维码 补充 总结 二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的.黑白相间的.记录数据符号信息的图形. 二维码被称为快速响应码,可能看起来很简单,但它们能够存储大量数据.无论扫描二维码时包含多少数据,用户都可以立即访问信息. 近些年二维码也是迅速普及,目前已经成为了我们生活中的一部分,它有许多应用场景: 信息获取(名片.地图.WIFI密码.资料) 网站跳转(跳转到微博.手机网站.网站) 广告推送(用户扫码,直接浏览商家推送的视频.音频广告) 手机电商(用

  • 基于Python生成个性二维码过程详解

    一.问题描述 通过调用MyQR模块来实现生成个人所需二维码. 安装: pip install myqr 二.代码实现 1.普通二维码 from MyQR import myqr # 普通二维码 myqr.run( words='http://www.cnblogs.com/mayi0312', save_name='qrcode.png' ) 效果图: 2.带图片的艺术二维码 光是二维码,太单调了点.我们可以加上我们想要的图片,使二维码更具辨识度! 准备的Logo图片: 当然,也可以选择其他个人

  • 基于Python编写一个二维码生成器

    目录 前言 1.安装第三方库 2.QRCode参数解释 3.自定义二维码生成器 4.给二维码加图片 5.全部代码 前言 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型.现在的二维码随处可见,甚至有人觉得在以后的墓碑上都可以刻一个二维码,通过扫描该二维码便可知墓主传奇的一生.所以如何快速定制自己的二维码便显得极为的重要,本文用python生成

  • 基于PyQT5制作一个二维码生成器

    个性化二维码的exe桌面应用的获取方式我放在文章最后面了,注意查收.通过执行打包后的exe应用程序可以直接运行生成个性化二维码. 开始之前先来看一下通过二维码生成器是如何生成个性化二维码的. 其中使用的python包和之前的GUI应用制作使用的模块是一样的. # -*- coding:utf-8 -*- import os import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore im

  • 基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算

    方法一: 结合lambda表达式.函数调用运算符.标准库函数对象.C++11标准新增的标准库function类型,编写一个简单的计算器,可实现简单的加.减.乘.除.取余二元运算.代码如下: #include "pch.h" #include <iostream> #include <functional> #include <map> #include <string> using namespace std; int add(int i

  • 基于Python编写一个根据姓名测性别的小程序

    目录 导语 一.准备环节 1.1安装环境 二.准备素材 三.开始敲代码 3.1导入模块 3.2定义界面 3.3预测性别 3.4读取数据 3.5附完整的源码 四.效果展示 总结 导语 以前上英语课老师都会教哪些名字一听就知道是男生的,比如David.Tom.Jerry,然后Angela.Sophia一听就是女生的名字.当你以为所有名字一听就可以辨别男女的时候,你就想错了~就像中文里面“贾凡”,你以为是男生,其实是女生也说不定.这种难分性别的名字 其实很多呢~为了避免宝宝的性别和提前取好的名字冲突,

  • 基于Python编写一个简单的端口扫描器

    目录 1.需要的库 2.获取一个 host 地址 3.循环所有的端口 4.完整脚本 端口扫描是非常实用的,不止用在信息安全方面,日常的运维也用得到.这方面的工具也不要太多,搞过 CTF 的朋友会告诉你有多少端口扫描工具,那为什么还要用 Python 再自己实现一遍?这个问题就像饭店里的菜已经很好吃了,为什么还要自己烧菜一样,主要还是为了适合自己的口味,添加自己需要的个性功能. 今天我们将用 20 行代码编写一个简单的端口扫描器.让我们开始吧! 1.需要的库 都是标准库,因此内网环境也不影响: i

  • 基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算

    方法一: 结合lambda表达式.函数调用运算符.标准库函数对象.C++11标准新增的标准库function类型,编写一个简单的计算器,可实现简单的加.减.乘.除.取余二元运算.代码如下: #include "pch.h" #include <iostream> #include <functional> #include <map> #include <string> using namespace std; int add(int i

  • 基于Python编写一个爆炸信息窗口脚本

    目录 前言 爆炸信息窗口 设计思路 模块准备 删除好友警告 源代码 批量获取表情包 前言 Hello!大家好,有好几天没有跟大家见面咯~不知道大家是否在等待<小玩意儿>专栏的更新呢 上一篇的文章[老师见打系列]:我只是写了一个自动回复讨论的脚本~ 感觉挺受大伙的喜欢的呢,非常感谢各位兄弟给哥们顶上热榜,你们的支持就是我更新的动力 所以这几天我就在想是否继续往[老师见打系列]更新文章,想出一些能让”老师见打“的idear,当然,我并不是要故意惹老师生气的哈…… 直到前天,突然想写点什么,于是打开

  • 基于Python编写一个宝石消消乐小游戏

    目录 开发工具 环境搭建 原理简介 开发工具 python版本:3.6.4 相关模块: pygame:以及一些python自带的模块. 环境搭建 安装python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 游戏规则: 玩家通过鼠标交换相邻的拼图,若交换后水平/竖直方向存在连续三个相同的拼图,则这些拼图消失,玩家得分,同时生成新的拼图以补充消失的部分,否则,交换失败,玩家不得分.玩家需要在规定时间内获取尽可能高的得分. 实现过程: 首先加载一些必要的游戏素材: 加载背景音乐: py

  • 基于Python编写一个自动关机程序

    目录 1.实现效果 2.实现步骤 3.全部代码 1.实现效果 2.实现步骤 模块导入 import os,sys,time from PyQt5 import QtCore,QtWidgets,QtGui 窗口设置 def pageShow(self,page): #设置窗口的位置和大小 page.setGeometry(400,400,400,200) #设置窗口的标题 page.setWindowTitle('Window shutdown') #设置窗口的图标 #page.setWindo

随机推荐