資訊內(nèi)容
介紹python應(yīng)用學(xué)習(xí)之qrcode生成二維碼

免費(fèi)學(xué)習(xí)推薦:python視頻教程Cx6少兒編程網(wǎng)-https://www.pxcodes.com
python應(yīng)用學(xué)習(xí)(一)——qrcode生成二維碼Cx6少兒編程網(wǎng)-https://www.pxcodes.com
前言一、準(zhǔn)備二、代碼編寫1.引入庫2.配置初始化參數(shù)3.得到二維碼對象4.在二維碼中放置logo5.配置相應(yīng)信息并調(diào)用函數(shù)6.完整代碼**后前言
Cx6少兒編程網(wǎng)-https://www.pxcodes.com
本文利用python生成一個(gè)自己想要的二維碼,其中代碼做了注釋并于相關(guān)知識的解答
Cx6少兒編程網(wǎng)-https://www.pxcodes.com
一、準(zhǔn)備Cx6少兒編程網(wǎng)-https://www.pxcodes.com
1、python環(huán)境Cx6少兒編程網(wǎng)-https://www.pxcodes.com
2、涉及到的python庫需要 pip install 包名 安裝Cx6少兒編程網(wǎng)-https://www.pxcodes.com
pip install qrcode
pip install pillowCx6少兒編程網(wǎng)-https://www.pxcodes.com
二、代碼編寫Cx6少兒編程網(wǎng)-https://www.pxcodes.com
1.引入庫Cx6少兒編程網(wǎng)-https://www.pxcodes.com
import qrcodefrom PIL import Imageimport osimport sys2.配置初始化參數(shù)Cx6少兒編程網(wǎng)-https://www.pxcodes.com
Cx6少兒編程網(wǎng)-https://www.pxcodes.com
qr = qrcode.QRCode( version=2, #25*25 二維碼的版本號,每一個(gè)版本號對應(yīng)一個(gè)尺寸,這里尺寸不是圖片的大小而的是二維碼長寬被分成的份數(shù) error_correction=qrcode.constants.ERROR_CORRECT_H, #糾錯(cuò)容量,指二維碼不完整時(shí)可以正常識別出原信息的概率(ERROR_CORRECT_H的糾錯(cuò)率**高) box_size=8, #生成圖片的像素 border=1, #二維碼邊框?qū)挾? )3.得到二維碼對象Cx6少兒編程網(wǎng)-https://www.pxcodes.com
Cx6少兒編程網(wǎng)-https://www.pxcodes.com
qr.add_data(string) **#string為想要打開的鏈接** qr.make(fit=True) #用make()方法生成圖片 img = qr.make_image(fill_color = 'black',back_color = 'white') #得到二維碼對象,并可以通過修改fill_color、back_color參數(shù)來調(diào)整小格子顏色和背景色 img = img.convert("RGBA") #將圖片轉(zhuǎn)換為RGBA格式4.在二維碼中放置logoCx6少兒編程網(wǎng)-https://www.pxcodes.com
if logo and os.path.exists(logo): try: icon = Image.open(logo) img_w, img_h = img.size #img_w、img_h是二維碼的尺寸 except Exception as e: print(e) sys.exit(1) factor = 4 size_w = int(img_w / factor) size_h = int(img_h / factor) icon_w, icon_h = icon.size #icon_W、icon_h是logo原始的尺寸 if icon_w > size_w: #size_W、size_h是二維碼尺寸的1/factor icon_w = size_w if icon_h > size_h: icon_h = size_h icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS) #antialias是平滑處理 # 保證二維碼大小不超過二維碼大小的1/factor w = int((img_w - icon_w) / 2) #計(jì)算logo在二維碼中的相對位置 h = int((img_h - icon_h) / 2) icon = icon.convert("RGBA") img.paste(icon, (w, h), icon) #根據(jù)相對位置w、h將logo放到二維碼圖片上,所以說實(shí)際是logo并不是二維碼的一部分,會遮擋二維碼的一部分,不能太大,否則無法識別5.配置相應(yīng)信息并調(diào)用函數(shù)Cx6少兒編程網(wǎng)-https://www.pxcodes.com
if __name__ == "__main__": info = "https://blog.csdn.net/weixin_45386875/article/details/113766276" #二維碼的鏈接 pic_path = "qr.png" #生成的圖片保存文件 logo_path = "logo.png" #logo的文件名 gen_qrcode(info, pic_path,logo_path ) #調(diào)用函數(shù)6.完整代碼Cx6少兒編程網(wǎng)-https://www.pxcodes.com
import qrcodefrom PIL import Imageimport osimport sysdef gen_qrcode(string, path, logo=""): """ 生成中間帶logo的二維碼 需要安裝qrcode, PIL庫 @參數(shù) string: 二維碼字符串 @參數(shù) path: 生成的二維碼保存路徑 @參數(shù) logo: logo文件路徑 @return: None """ qr = qrcode.QRCode( version=2, #25*25 二維碼的版本號,每一個(gè)版本號對應(yīng)一個(gè)尺寸,這里尺寸不是圖片的大小而的是二維碼長寬被分成的份數(shù) error_correction=qrcode.constants.ERROR_CORRECT_H, #糾錯(cuò)容量,指二維碼不完整時(shí)可以正常識別出原信息的概率(ERROR_CORRECT_H的糾錯(cuò)率**高) box_size=8, #生成圖片的像素 border=1, #二維碼邊框?qū)挾? ) qr.add_data(string) #string為想要打開的鏈接 qr.make(fit=True) #用make()方法生成圖片 img = qr.make_image(fill_color = 'black',back_color = 'white') #得到二維碼對象,并可以通過修改fill_color、back_color參數(shù)來調(diào)整小格子顏色和背景色 img = img.convert("RGBA") #將圖片轉(zhuǎn)換為RGBA格式 if logo and os.path.exists(logo): try: icon = Image.open(logo) img_w, img_h = img.size #img_w、img_h是二維碼的尺寸 except Exception as e: print(e) sys.exit(1) factor = 4 size_w = int(img_w / factor) size_h = int(img_h / factor) icon_w, icon_h = icon.size #icon_W、icon_h是logo原始的尺寸 if icon_w > size_w: #size_W、size_h是二維碼尺寸的1/factor icon_w = size_w if icon_h > size_h: icon_h = size_h icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS) #antialias是平滑處理 # 保證二維碼大小不超過二維碼大小的1/factor w = int((img_w - icon_w) / 2) #計(jì)算logo在二維碼中的相對位置 h = int((img_h - icon_h) / 2) icon = icon.convert("RGBA") img.paste(icon, (w, h), icon) #根據(jù)相對位置w、h將logo放到二維碼圖片上,所以說實(shí)際是logo并不是二維碼的一部分,會遮擋二維碼的一部分,不能太大,否則無法識別 img.save(path) # 調(diào)用系統(tǒng)命令打開圖片 # xdg - open(opens a file or URL in the user's preferred application) #os.system('xdg-open %s' %(path)) #這是Linux系統(tǒng)的命令 os.startfile(path) #windows 下打開文件if __name__ == "__main__": info = "https://blog.csdn.net/weixin_45386875?spm=1010.2135.3001.5343" #二維碼的鏈接 pic_path = "qr.png" #生成的圖片保存文件 logo_path = "logo.png" #logo的文件名 gen_qrcode(info, pic_path,logo_path ) #調(diào)用函數(shù)相關(guān)免費(fèi)學(xué)習(xí)推薦:python教程(視頻)Cx6少兒編程網(wǎng)-https://www.pxcodes.com
以上就是介紹python應(yīng)用學(xué)習(xí)之qrcode生成二維碼的詳細(xì)內(nèi)容,更多請關(guān)注少兒編程網(wǎng)其它相關(guān)文章!Cx6少兒編程網(wǎng)-https://www.pxcodes.com

- 上一篇
python中導(dǎo)入模塊中的對象有哪幾種方式
簡介python中導(dǎo)入模塊中的對象的方式:1、導(dǎo)入整個(gè)模塊,格式為【import模塊1[模塊2[,...]]】;2、與form聯(lián)用導(dǎo)入整個(gè)模塊,格式為【form模塊名import*】;3、與form聯(lián)用導(dǎo)入一個(gè)或多個(gè)對象。本教程操作環(huán)境:windows7系統(tǒng)、python3.9版,DELLG3電腦,該方
- 下一篇
提高python效率的5種高級用法
簡介免費(fèi)學(xué)習(xí)推薦:python視頻教程任何編程語言的高級特征通常都是通過大量的使用經(jīng)驗(yàn)才發(fā)現(xiàn)的。比如你在編寫一個(gè)復(fù)雜的項(xiàng)目,并在stackoverflow上尋找某個(gè)問題的答案。然后你突然發(fā)現(xiàn)了一個(gè)非常優(yōu)雅的解決方案,它使用了你從不知道的Python功能!這種學(xué)習(xí)方式太有趣了:通過探索,偶然發(fā)現(xiàn)什么。下面