Python實(shí)現(xiàn)生成帶logo背景圖的二維碼
前言
二維碼簡(jiǎn)稱(chēng) QR Code(Quick Response Code),學(xué)名為快速響應(yīng)矩陣碼,是二維條碼的一種,由日本的 Denso Wave 公司于 1994 年發(fā)明?,F(xiàn)隨著智能手機(jī)的普及,已廣泛應(yīng)用于平常生活中,例如商品信息查詢(xún)、社交好友互動(dòng)、網(wǎng)絡(luò)地址訪問(wèn)等等。
盡管二維碼應(yīng)用漸趨廣泛,但與日韓等國(guó)相比,中國(guó)的二維碼發(fā)展還遠(yuǎn)遠(yuǎn)不夠。制約因素除了運(yùn)營(yíng)商的支持度外,還有技術(shù)、終端適配、盈利模式等方面。炒得很火熱的是二維碼與O2O(Online To Offline)模式的結(jié)合,即利用二維碼的讀取將線上的用戶(hù)引流給線下的商家。騰訊很看好這個(gè)模式,馬化騰稱(chēng)"二維碼是線上線下的一個(gè)關(guān)鍵入口"。盡管有些人不看好二維碼的應(yīng)用,但無(wú)可否認(rèn),只要培養(yǎng)了足夠多的用戶(hù)群,再結(jié)合良好的商業(yè)模式,二維碼將成為橋接現(xiàn)實(shí)與虛擬最得力的工具之一。
Python代碼是怎么生成二維碼的
這里介紹兩種方法:
1、qrcode模塊
qrcode模塊是Github上的一個(gè)開(kāi)源項(xiàng)目,提供了生成二維碼的接口。qrcode默認(rèn)使用PIL庫(kù)用于生成圖像。由于生成 qrcode 圖片需要依賴(lài) Python 的圖像庫(kù),所以需要先安裝 Python 圖像庫(kù) PIL(Python Imaging Library)。
2、MyQR模塊
MyQR是一個(gè)能夠產(chǎn)生基本二維碼、藝術(shù)二維碼(黑白與彩色)和動(dòng)態(tài)效果二維碼(黑白與彩色)的Python第三方庫(kù)。
MyQR 庫(kù)的更多介紹和源碼訪問(wèn) ?? ?https://github.com/x-hw/amazing-qr
模塊安裝問(wèn)題
運(yùn)行代碼報(bào)錯(cuò):ModuleNotFoundError: No module named ‘MyQR’
pip install MyQR
qrcode模塊生成的二維碼
注意:logo圖不要
太大,不然生成之后logo可能會(huì)擋住二維碼的內(nèi)容,導(dǎo)致掃不出來(lái)。
下面看實(shí)現(xiàn)代碼:
from PIL import Image import qrcode, os def create_qrcode(url, qrcodename): qr = qrcode.QRCode( version=1, # 設(shè)置容錯(cuò)率為最高 error_correction=qrcode.ERROR_CORRECT_H, # 用于控制二維碼的錯(cuò)誤糾正程度 box_size=8, # 控制二維碼中每個(gè)格子的像素?cái)?shù),默認(rèn)為10 border=1, # 二維碼四周留白,包含的格子數(shù),默認(rèn)為4 ) qr.add_data(url) # QRCode.add_data(data)函數(shù)添加數(shù)據(jù) qr.make(fit=True) # QRCode.make(fit=True)函數(shù)生成圖片 img = qr.make_image() img = img.convert("RGBA") # 二維碼設(shè)為彩色 logo = Image.open("images/逃逸的卡路里.png") # 傳gif生成的二維碼也是沒(méi)有動(dòng)態(tài)效果的 w,h = img.size logo_w,logo_h = logo.size l_w = int((w - logo_w) / 2) l_h = int((h - logo_h) / 2) logo = logo.convert("RGBA") img.paste(logo, (l_w, l_h), logo) img.show() img.save(os.getcwd() + "/images/" + qrcodename + ".png", quality=100) def main(): url = input("請(qǐng)輸入文本或URL:") qrcodename = input("請(qǐng)輸入生成二維碼的名稱(chēng):") create_qrcode(url,qrcodename) if __name__ == '__main__': main()
參數(shù)詳解 | |
---|---|
version=None | 一個(gè)整數(shù),范圍為1到40,表示二維碼的大?。ㄗ钚≈凳?,是個(gè)12×12的矩陣),如果想讓程序自動(dòng)生成,將值設(shè)置為 None 并使用 fit=True 參數(shù)即可 |
error_correction=constants.ERROR_CORRECT_M | 二維碼的糾錯(cuò)范圍,可以選擇4個(gè)常量:1. ERROR_CORRECT_L 7%以下的錯(cuò)誤會(huì)被糾正2. ERROR_CORRECT_M (default) 15%以下的錯(cuò)誤會(huì)被糾正3. ERROR_CORRECT_Q 25 %以下的錯(cuò)誤會(huì)被糾正4. ERROR_CORRECT_H. 30%以下的錯(cuò)誤會(huì)被糾正 |
box_size=10 | 控制二維碼中每個(gè)小格子包含的像素?cái)?shù) |
border=4 | 控制邊框(二維碼與圖片邊界的距離)包含的格子數(shù)(默認(rèn)為4,是相關(guān)標(biāo)準(zhǔn)規(guī)定的最小值) |
image_factory=None | 選擇生成圖片的形式,默認(rèn)為PIL圖像 |
mask_pattern=None | 選擇生成圖片的的掩模 |
MyQR模塊生成靜態(tài)或動(dòng)態(tài)背景的二維碼
from MyQR import myqr import os text = input("請(qǐng)輸入文本或url:") save_name = input("請(qǐng)輸入生成二維碼的名稱(chēng):")+".png" myqr.run( words=text, #在命令后輸入鏈接或者句子作為參數(shù),然后在程序的當(dāng)前目錄中產(chǎn)生相應(yīng)的二維碼圖片文件,默認(rèn)命名為” qrcode.png“ version=1, #設(shè)置容錯(cuò)率為最高默認(rèn)邊長(zhǎng)是取決于你輸入的信息的長(zhǎng)度和使用的糾錯(cuò)等級(jí);而默認(rèn)糾錯(cuò)等級(jí)是最高級(jí)的H level='H', #控制糾錯(cuò)水平,范圍是L、M、Q、H,從左到右依次升高 picture="images/逃逸的卡路里.png", #用來(lái)將QR二維碼圖像與一張同目錄下的圖片相結(jié)合,產(chǎn)生一張黑白圖片 colorized=True, #可以使產(chǎn)生的圖片由黑白(False)變?yōu)椴噬?True)的 contrast=1.0, #用以調(diào)節(jié)圖片的對(duì)比度,1.0 表示原始圖片,更小的值表示更低對(duì)比度,更大反之。默認(rèn)為1.0。 brightness=1.0, #用來(lái)調(diào)節(jié)圖片的亮度,其余用法和取值與 -con 相同 save_name=save_name, #控制文件名,格式可以是 .jpg, .png ,.bmp ,.gif ; save_dir=os.getcwd() + "/images/" )
參數(shù):
- words:文本或鏈接
- version:改變生成二維碼圖片的大?。环秶?~40)
- picture: 指定生成二維碼的背景圖
- colorized:只有兩個(gè)參數(shù),True為彩色,F(xiàn)lase為灰色
- level :范圍只有:‘L’,‘M’,‘Q’,‘H’;控制糾錯(cuò)水平
- contrast :調(diào)節(jié)背景圖片的對(duì)比度,只能給予float類(lèi)型的參數(shù)
- brightness:調(diào)節(jié)背景圖片的亮度,如果參數(shù)值過(guò)大,背景圖將會(huì)變?yōu)榘咨?;只能給予float類(lèi)型的參數(shù)
- save_name:保存的格式只有:’.jpg’,‘.png’, ‘.bmp’, '.gif’等四種格式,路徑可以使用絕對(duì)路徑和相對(duì)路徑。
- save_dir:存儲(chǔ)路徑
動(dòng)態(tài)圖展示
總結(jié)
以上就是Python代碼對(duì)二維碼生成處理的示例,根據(jù)不同需求可以選擇qrcode模塊或者M(jìn)yQR模塊來(lái)實(shí)現(xiàn),希望對(duì)看到的小伙伴有幫助作用。
到此這篇關(guān)于Python實(shí)現(xiàn)生成帶logo背景圖的二維碼的文章就介紹到這了,更多相關(guān)Python生成二維碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python爬蟲(chóng)實(shí)現(xiàn)抓取電影網(wǎng)站信息并入庫(kù)
本文主要介紹了利用Python爬蟲(chóng)實(shí)現(xiàn)抓取電影網(wǎng)站信息的功能,并將抓取到的信息入庫(kù)。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2022-02-02Python創(chuàng)建一個(gè)空的dataframe,并循環(huán)賦值的方法
今天小編就為大家分享一篇Python創(chuàng)建一個(gè)空的dataframe,并循環(huán)賦值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11使用Python判斷質(zhì)數(shù)(素?cái)?shù))的簡(jiǎn)單方法講解
這篇文章主要介紹了使用Python判斷質(zhì)數(shù)(素?cái)?shù))的簡(jiǎn)單方法講解,經(jīng)常被用來(lái)做科學(xué)計(jì)算的Python處理這種小問(wèn)題當(dāng)然手到擒來(lái)^_-需要的朋友可以參考下2016-05-05利用PyCharm操作Github(倉(cāng)庫(kù)新建、更新,代碼回滾)
這篇文章主要介紹了利用PyCharm操作Github(倉(cāng)庫(kù)新建、更新,代碼回滾),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12使用Django的JsonResponse返回?cái)?shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了使用Django的JsonResponse返回?cái)?shù)據(jù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Python素?cái)?shù)檢測(cè)實(shí)例分析
這篇文章主要介紹了Python素?cái)?shù)檢測(cè)方法,實(shí)例分析了Python判定素?cái)?shù)的相關(guān)技巧,需要的朋友可以參考下2015-06-06jupyter notebook更換皮膚主題的實(shí)現(xiàn)
這篇文章主要介紹了jupyter notebook更換皮膚主題的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01