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