锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

如何用Python制作一个简单的二维码生成器

时间:2023-08-01 06:07:00 连接器tk10

目录

前言

安装第三方库

2、QRCode参数解释

3、自定义二维码生成器

给二维码添加图片

5.所有代码。

6、结果


前言

二维码又称二维条码,常见的二维码是QR Code,QR全称Quick Response,这是近年来移动设备上一种超级流行的编码方法,它比传统的要好Bar Code条形码可以存储更多的信息和表示更多的数据类型。现在二维码随处可见,有些人甚至认为二维码可以刻在未来的墓碑上,通过扫描二维码可以知道墓主的传奇生活。因此,如何快速定制自己的二维码非常重要。本文使用python生成一个简单的二维码生成器,可以定制二维码的背景、填充颜色和二维码中间的背景图片。

安装第三方库

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)错误。原来是python超过3个库使用其他库(pillow)替代了

2、QRCode参数解释

**version:**值为1~控制二维码大小的40整数(最小值为1,为12×12的矩阵)。如果想让程序自动确定,将值设置为None,并使用fit参数即可。
error_correction: 指定二维码的容错系数有以下四个系数:
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() 

结果如下:

给二维码添加图片

# 添加二维码图片     # 将颜色模式转换为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、全部代码

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.Labelwindow, 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、结果

我还是喜欢绿色的码,因为看起来更健康,加入博主博客地址的二维码:

可恶的红码,加入一段话的二维码:

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章