最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python編寫一個二維碼生成器

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

前言

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

1、安裝第三方庫

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

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

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

2、QRCode參數解釋

version:值為1~40的整數,控制二維碼的大?。ㄗ钚≈凳?,是個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,是相關標準規(guī)定的最小值)

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

結果如下:

4、給二維碼加圖片

#?給二維碼加圖片
????#?把顏色模式轉換為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、全部代碼

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)
????#?給二維碼加圖片
????#?把顏色模式轉換為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.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二維碼生成器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python requests庫參數提交的注意事項總結

    Python requests庫參數提交的注意事項總結

    這篇文章主要給大家介紹了關于Python requests庫參數提交的注意事項,文中通過示例代碼和圖片介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 如何在Windows下載、安裝Python和配置環(huán)境(新手、保姆級教程)

    如何在Windows下載、安裝Python和配置環(huán)境(新手、保姆級教程)

    本文詳細介紹了如何在Windows系統(tǒng)上下載、安裝Python以及配置環(huán)境變量,通過步驟說明,即使是新手也能順利完成Python的安裝,并驗證其是否成功,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • python中Django文件上傳方法詳解

    python中Django文件上傳方法詳解

    在本篇文章里小編給大家整理了一篇關于python中Django文件上傳方法,有興趣的朋友們可以學習下。
    2020-08-08
  • 探討python??pandas.DataFrame.to_json?函數

    探討python??pandas.DataFrame.to_json?函數

    這篇文章主要介紹了python??pandas.DataFrame.to_json?函數示例詳解,to_json?函數提供了靈活的參數設置,使得?pandas?數據框能夠以多種格式導出為?JSON?文件,需要的朋友可以參考下
    2024-07-07
  • python實現(xiàn)數組平移K位問題

    python實現(xiàn)數組平移K位問題

    這篇文章主要介紹了python實現(xiàn)數組平移K位問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python實現(xiàn)隨機分層抽樣的示例詳解

    Python實現(xiàn)隨機分層抽樣的示例詳解

    在數據分析與機器學習的實踐中,抽樣是不可或缺的一步,分層抽樣作為一種常用的抽樣方法,能夠確保樣本在不同類別中的比例與總體一致,下面我們看看如何使用Python實現(xiàn)隨機分層抽樣吧
    2024-11-11
  • Python之Pygame的Event事件模塊

    Python之Pygame的Event事件模塊

    這篇文章主要介紹了Pygame的Event事件模塊,事件(Event)是 Pygame 的重要模塊之一,它是構建整個游戲程序的核心,Pygame 定義了一個專門用來處理事件的結構,即事件隊列,本文有一定參考價值,感興趣的同學可以閱讀參考
    2023-04-04
  • python 文件操作刪除某行的實例

    python 文件操作刪除某行的實例

    下面小編就為大家?guī)硪黄猵ython 文件操作刪除某行的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Python turtle繪圖教程之七段數碼管顯示數字和字母

    Python turtle繪圖教程之七段數碼管顯示數字和字母

    這篇文章主要給大家介紹了關于Python turtle繪圖教程之七段數碼管顯示數字和字母的相關資料,Python是一種流行的編程語言,可用于編寫各種類型的程序,在數碼管顯示器上數字8由7條不同的線條組成,需要的朋友可以參考下
    2023-10-10
  • Python多線程實現(xiàn)支付模擬請求過程解析

    Python多線程實現(xiàn)支付模擬請求過程解析

    這篇文章主要介紹了python多線程實現(xiàn)支付模擬請求過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04

最新評論

龙海市| 焉耆| 孙吴县| 竹北市| 临夏市| 涞水县| 鄂托克旗| 虎林市| 都匀市| 红原县| 闸北区| 屯留县| 新源县| 南部县| 大安市| 兰西县| 开封县| 永丰县| 昌平区| 衡阳县| 西城区| 永善县| 沂水县| 阿克陶县| 抚顺县| 娱乐| 新安县| 旬邑县| 盖州市| 土默特左旗| 丹阳市| 保靖县| 高平市| 马公市| 明溪县| 叙永县| 阿合奇县| 渭南市| 丘北县| 永福县| 元江|