前言二维码也叫二维码。常见的二维码是QRCode。QR的全称是QuickResponse。是近年来在移动设备上非常流行的代码。这样一来,它可以比传统条码存储更多的信息,也可以表示更多的数据类型。现在二维码随处可见,甚至有人认为未来可以在墓碑上刻上二维码,扫一扫二维码就可以知道墓主传奇的一生。那么如何快速定制属于自己的二维码就显得尤为重要了。本文使用python生成一个简单的二维码生成器,可以自定义二维码的背景、填充颜色、背景图片。1、安装第三方库win+R,输入cmd,进入系统管理员界面,安装第三方库pipinstallqrcodepipinstallpillow#PIL的派生分支,python3以上PIL的替代库注:PIL是python的一个重要图片库,在二维码添加图片的时候需要用到,但是在安装的时候出现:ERROR:CouldnotfindaversionthatsatisfytherequirementPIL(fromversions:none)错误。原来是python3上面的库换成了其他库(pillow)2.QRCode参数解释版本:值为1到40的整数,控制二维码的大小(最小值为1,即一个12×12矩阵)。如果您希望程序自动确定,请将值设置为None并使用fit参数。error_correction:指定二维码的容错系数,有以下4个系数:ERROR_CORRECT_L:7%的字符容错ERROR_CORRECT_M:15%的字符容错ERROR_CORRECT_Q:25%的字符容错-tolerantERROR_CORRECT_H:30%的字符码可以容错box_size:控制二维码中每个小格包含的像素个数。border:控制border(二维码与图片边框的距离)包含的格子个数(默认为4,为相关标准规定的最小值)3.自定义二维码生成器生成窗口,可以在输入框中自定义定义二维码的相关信息,包括你要输入的文字(可以是文本也可以是URL),填充颜色和背景颜色。代码如下: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_label.text="背景颜色:")地方(x=50,y=120)Entry_input_back_color=tk.Entry()Entry_input_back_color.place(x=120,y=120)button=tk.Button(window,text='startgeneration',command=create_code)按钮。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.sizefactor=4#通过二维码的宽高计算logo图片的最大宽高size_w=int(img_w/factor)size_h=int(img_h/factor)#得到宽高ofthelogoicon_w,icon_h=icon.size#比较logo的宽高和最大宽高,如果超过最大则调整logo尺寸为最大ificon_w>size_w:icon_w=size_wificon_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)图标=图标。convert("RGBA")#粘贴logo图片到二维码指定位置img.paste(icon,(w,h),icon)5.所有代码window.mainloop()importqrcodeimporttkinterastkfromPILimportImagedefcreate_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,#二维码的边RR_长RECT0R#R#码可以容错,因为插入了图片,所以提高了容错率error_correction=qrcode.constants.ERROR_CORRECT_H,box_sizee=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)#获取logoicon_w的宽高,icon_h=icon.size#比较logo的宽高和最大宽高,如果icon_w>size_w,则调整logo尺寸为最大:icon_w=size_wificon_h>size_h:icon_h=size_hicon=icon.resize((icon_w,icon_h),Image.ANTIALIAS)#根据log的长宽确定logo的位置oandthepicturew=int((img_w-icon_w)/2)h=int((img_h-icon_h)/2)icon=icon.convert("RGBA")#将logo图片粘贴到二维码指定位置codeimg.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)如果__name__=='__main__':window=tk.Tk()window.title('二维码生成器')window.geometry('900x600')label_url=tk.Label(window,text="Inputtext:")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="fillcolor:")label_fill_color.place(x=50,y=80)entry_input_fill_color=tk.Entry()input_fill_。放置(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='startgeneration',command=create_code)button.place(x=140,y=160)最近整理了一套编程学习资料分享给大家你,都是干货,包括教程视频、电子书、源码笔记、学习路线图、实战项目、面试题等,关注公众号【Python编程学习圈】回复关键词免费领取【学习资料】就这些,抓紧时间!
