基于Python怎么编写一个二维码生成器(python,开发技术)

时间:2024-04-30 12:42:47 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

这篇“基于Python怎么编写一个二维码生成器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于Python怎么编写一个二维码生成器”文章吧。

1、安装第三方库

win+R,输入cmd,进入系统管理员界面,安装第三方库

pipinstallqrcodepipinstallpillow#PIL的派生分支,python3以上PIL的替代库

注:PIL是python重要的图像库,在给二维码加图片时需要用到它,但安装时出现:ERROR: Could not find a version that satisfies the requirement PIL (from versions: none)错误。原来是python3以上该库就用其他的库(pillow)替代了

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

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()

结果如下:

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

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)#获取logo的宽和高icon_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)icon=icon.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,#二维码的边长#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尺寸调整到最大限度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)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怎么编写一个二维码生成器的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:python如何实现连通域处理函数下一篇:

2 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18