版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第基于Python編寫一個二維碼生成器目錄前言1、安裝第三方庫2、QRCode參數(shù)解釋3、自定義二維碼生成器4、給二維碼加圖片5、全部代碼
前言
二維碼又稱二維條碼,常見的二維碼為QRCode,QR全稱QuickResponse,是一個近幾年來移動設備上超流行的一種編碼方式,它比傳統(tǒng)的BarCode條形碼能存更多的信息,也能表示更多的數(shù)據(jù)類型?,F(xiàn)在的二維碼隨處可見,甚至有人覺得在以后的墓碑上都可以刻一個二維碼,通過掃描該二維碼便可知墓主傳奇的一生。所以如何快速定制自己的二維碼便顯得極為的重要,本文用python生成一個簡單的二維碼生成器,該生成器可以定制二維碼的背景、填充顏色以及二維碼中間的背景圖片。
1、安裝第三方庫
win+R,輸入cmd,進入系統(tǒng)管理員界面,安裝第三方庫
pip
install
qrcode
pip
install
pillow
#PIL的派生分支,python3以上PIL的替代庫
注:PIL是python重要的圖像庫,在給二維碼加圖片時需要用到它,但安裝時出現(xiàn):ERROR:CouldnotfindaversionthatsatisfiestherequirementPIL(fromversions:none)錯誤。原來是python3以上該庫就用其他的庫(pillow)替代了
2、QRCode參數(shù)解釋
version:值為1~40的整數(shù),控制二維碼的大?。ㄗ钚≈凳?,是個1212的矩陣)。如果想讓程序自動確定,將值設置為None,并使用fit參數(shù)即可。error_correction:指定二維碼的容錯系數(shù),分別有以下4個系數(shù):
ERROR_CORRECT_L:7%的字碼可被容錯ERROR_CORRECT_M:15%的字碼可被容錯ERROR_CORRECT_Q:25%的字碼可被容錯ERROR_CORRECT_H:30%的字碼可被容錯
box_size:控制二維碼中每個小格子包含的像素數(shù)。border:控制邊框(二維碼與圖片邊界的距離)包含的格子數(shù)(默認為4,是相關標準規(guī)定的最小值)
3、自定義二維碼生成器
生成一個窗口,可以在輸入框中自定義二維碼的相關信息,包括想輸入的文本(可以是文字或者網(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()
結果如下:
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
#
通過二維碼寬高計算出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%的字碼可被容錯,因為插入了圖片,所以增加容錯率
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
#
通過二維碼寬高計算出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,
te
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年智能停車輔助系統(tǒng)項目公司成立分析報告
- 2025年中職水利水電工程施工(水工建筑物基礎)試題及答案
- 2026年家政服務教學(家政服務應用)試題及答案
- 2025年高職防災減災技術(災害預防措施)試題及答案
- 2025年高職物理學(相對論)試題及答案
- 2025年中職作曲與作曲技術理論(作曲理論)試題及答案
- 2025年中職(茶葉生產(chǎn)與加工)茶葉采摘標準試題及答案
- 2025年大學大四(印刷企業(yè)管理)企業(yè)運營專項測試題及答案
- 2025年大學生態(tài)環(huán)境保護(生態(tài)修復工程)試題及答案
- 2025年高職數(shù)字媒體藝術設計(數(shù)字插畫創(chuàng)作)試題及答案
- 麻醉規(guī)培結業(yè)匯報
- 物流市場開發(fā)管理制度
- DBJ04-T495-2025 《發(fā)震斷裂區(qū)域建筑抗震設計標準》
- 2025年貴州省貴陽市云巖區(qū)中考二模語文試題(含答案)
- GB/T 45592-2025建筑材料產(chǎn)品追溯體系通用要求
- 殘疾人居家安全課件
- 2025中式面點師技師理論考試試題及答案
- 生產(chǎn)經(jīng)營單位事故隱患內(nèi)部報告獎勵機制實踐與案例
- 2024-2025學年山西省晉中市榆次區(qū)上學期期末八年級數(shù)學試卷
- 藥品信息服務合同協(xié)議
- 山西省太原市2024-2025學年高三上學期期末學業(yè)診斷英語試卷2
評論
0/150
提交評論