亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Python編寫一個(gè)二維碼生成器

 更新時(shí)間:2022年06月07日 09:31:19   作者:Python編程學(xué)習(xí)圈  
二維碼又稱二維條碼,常見的二維碼為QR Code,QR全稱Quick Response,是一個(gè)近幾年來移動設(shè)備上超流行的一種編碼方式。本文將利用python生成一個(gè)簡單的二維碼生成器,需要的可以參考一下

前言

二維碼又稱二維條碼,常見的二維碼為QR Code,QR全稱Quick Response,是一個(gè)近幾年來移動設(shè)備上超流行的一種編碼方式,它比傳統(tǒng)的Bar Code條形碼能存更多的信息,也能表示更多的數(shù)據(jù)類型?,F(xiàn)在的二維碼隨處可見,甚至有人覺得在以后的墓碑上都可以刻一個(gè)二維碼,通過掃描該二維碼便可知墓主傳奇的一生。所以如何快速定制自己的二維碼便顯得極為的重要,本文用python生成一個(gè)簡單的二維碼生成器,該生成器可以定制二維碼的背景、填充顏色以及二維碼中間的背景圖片。

1、安裝第三方庫

win+R,輸入cmd,進(jìn)入系統(tǒng)管理員界面,安裝第三方庫

pip?install?qrcode
pip?install?pillow??#PIL的派生分支,python3以上PIL的替代庫

注:PIL是python重要的圖像庫,在給二維碼加圖片時(shí)需要用到它,但安裝時(shí)出現(xiàn):ERROR: Could not find a version that satisfies the requirement PIL (from versions: none)錯(cuò)誤。原來是python3以上該庫就用其他的庫(pillow)替代了

2、QRCode參數(shù)解釋

version:值為1~40的整數(shù),控制二維碼的大?。ㄗ钚≈凳?,是個(gè)12×12的矩陣)。如果想讓程序自動確定,將值設(shè)置為 None,并使用 fit 參數(shù)即可。error_correction:指定二維碼的容錯(cuò)系數(shù),分別有以下4個(gè)系數(shù):

  • ERROR_CORRECT_L: 7%的字碼可被容錯(cuò)
  • ERROR_CORRECT_M: 15%的字碼可被容錯(cuò)
  • ERROR_CORRECT_Q: 25%的字碼可被容錯(cuò)
  • ERROR_CORRECT_H: 30%的字碼可被容錯(cuò)

box_size:控制二維碼中每個(gè)小格子包含的像素?cái)?shù)。border:控制邊框(二維碼與圖片邊界的距離)包含的格子數(shù)(默認(rèn)為4,是相關(guān)標(biāo)準(zhǔn)規(guī)定的最小值)

3、自定義二維碼生成器

生成一個(gè)窗口,可以在輸入框中自定義二維碼的相關(guān)信息,包括想輸入的文本(可以是文字或者網(wǎng)址),填充顏色以及背景顏色。代碼如下:

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

結(jié)果如下:

4、給二維碼加圖片

#?給二維碼加圖片
????#?把顏色模式轉(zhuǎn)換為RGBA,它表示帶透明度掩模的真彩色
????img?=?img.convert("RGBA")
????#?從文件里加載二維碼中心logo圖片,用Image函數(shù)的open方法
????icon?=?Image.open("2.jpg")
????#?得出二維碼的寬高
????img_w,?img_h?=?img.size
????factor?=?4
????#?通過二維碼寬高計(jì)算出logo圖片寬和高的最大限度
????size_w?=?int(img_w?/?factor)
????size_h?=?int(img_h?/?factor)
????#?獲取logo的寬和高
????icon_w,?icon_h?=?icon.size
????#?比較logo寬高和最大限度寬高,如果超過最大限度就將logo尺寸調(diào)整到最大限度
????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)
????#?根據(jù)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%的字碼可被容錯(cuò),因?yàn)椴迦肓藞D片,所以增加容錯(cuò)率
????????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)
????#?給二維碼加圖片
????#?把顏色模式轉(zhuǎn)換為RGBA,它表示帶透明度掩模的真彩色
????img?=?img.convert("RGBA")
????#?從文件里加載二維碼中心logo圖片,用Image函數(shù)的open方法
????icon?=?Image.open("2.jpg")
????#?得出二維碼的寬高
????img_w,?img_h?=?img.size
????factor?=?4
????#?通過二維碼寬高計(jì)算出logo圖片寬和高的最大限度
????size_w?=?int(img_w?/?factor)
????size_h?=?int(img_h?/?factor)
????#?獲取logo的寬和高
????icon_w,?icon_h?=?icon.size
????#?比較logo寬高和最大限度寬高,如果超過最大限度就將logo尺寸調(diào)整到最大限度
????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)
????#?根據(jù)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)

到此這篇關(guān)于基于Python編寫一個(gè)二維碼生成器的文章就介紹到這了,更多相關(guān)Python二維碼生成器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論