聲明
import qrcode
使用
QRCode 方法
qrcode.QRCode(
version=1,
error_correction=qrcode.ERROR_CORRECT_L,
box_size=10,
border=4,
image_factory=None,
mask_pattern=None)
參數(shù)解釋
1、version:控制二維碼的大小,取值范圍從1到40。取最小值1時(shí),二維碼大小為21*21。取值為 None (默認(rèn))或者使用fit=true參數(shù)(默認(rèn))時(shí),二維碼會自動調(diào)整大小。
2、error_correction:控制二維碼糾錯(cuò)級別。
ERRORCORRECTL:大約7%或者更少的錯(cuò)誤會被更正。
ERRORCORRECTM:默認(rèn)值,大約15%或者更少的錯(cuò)誤會被更正。
ERRORCORRECTQ:大約25%或者更少的錯(cuò)誤會被更正。
ERRORCORRECTH:大約30%或者更少的錯(cuò)誤會被更正。
3、box_size:控制二維碼中每個(gè)格子的像素?cái)?shù),默認(rèn)為 10。
4、border:控制二維碼四周留白包含的格子數(shù),默認(rèn)為4。
5、image_factory:選擇生成圖片的形式,默認(rèn)為 PIL 圖像。
6、mask_pattern:選擇生成圖片的的掩模。
方法屬性解釋
常用方法:
1、add_data(str,optimize=20):添加要轉(zhuǎn)換的文字到data參數(shù);如果使用了optimize優(yōu)化參數(shù),數(shù)據(jù)將被拆分為多個(gè)塊來進(jìn)行優(yōu)化,以找到一個(gè)長度至少為這個(gè)值的足夠簡潔的方式來生成二維碼。設(shè)置為“0”以避免優(yōu)化。
2、make(fit=True):當(dāng)fit參數(shù)為真或者沒有給出version參數(shù)時(shí),將會調(diào)用bestfit方法來找到適合數(shù)據(jù)的最小尺寸。如果沒有設(shè)置maskpattern,將會調(diào)用bestmaskpattern方法來找到找到最有效的掩模圖案。最后將這些數(shù)據(jù)傳遞給makeImpl方法來生成二維碼。與qrcode本體的make方法不一樣的是,這個(gè)方法沒有任何返回值。
3、makeimage(fillcolor=None, backcolor=None,imagefactory=None):創(chuàng)建二維碼的圖像并返回,默認(rèn)為 PIL 圖像。如果要讓二維碼有顏色,可以在這里設(shè)置。
4、clear:清空數(shù)據(jù)
5、get_matrix:返回二維碼數(shù)組。
6、print_ascii(out=None, tty=False, invert=False):這個(gè)方法就比較有趣了,可以用字符畫的形式來輸出二維碼,但是掃的時(shí)候一般都掃不出來。
其中的invert參數(shù)是決定是否反轉(zhuǎn)顏色的參數(shù),默認(rèn)為假,如果為真的話會這樣:
其他方法:
1、bestfit(start=self.version):找到適合數(shù)據(jù)所需的最小尺寸。
2、bestmaskpattern():找到最有效的掩模圖案。
3、makeImpl(test, maskpattern):生成二維碼的直接函數(shù)
4、mapdata:(內(nèi)部函數(shù),無需了解)
5、printtty(out=None):用TTY顏色輸出二維碼,如果沒有給出out參數(shù),會使用sys.stdout。
6、setuppositionadjustpattern:(內(nèi)部函數(shù))
7、setuppositionprobepattern:(內(nèi)部函數(shù))
8、setuptimingpattern:(內(nèi)部函數(shù))
9、setuptypeinfo:(內(nèi)部函數(shù))
10、setuptypenumber:(內(nèi)部函數(shù))
屬性:
1、border:
2、boxsize:
3、datacache:
4、datalist:
5、errorcorrection:
6、imagefactory:
7、maskpattern:
8、modules:
9、modules_count:
10、version:
生成 SVG 圖像
qrcode可以生成三種不同的svg圖像,一種是用路徑表示的svg,一種是用矩形集合表示的完整svg文件,還有一種是用矩形集合表示的svg片段。第一種用路徑表示的svg其實(shí)就是矢量圖,可以在圖像放大的時(shí)候可以保持圖片質(zhì)量,而另外兩種可能會在格子之間出現(xiàn)空隙。
這三種分別對應(yīng)了svg.py中的SvgPathImage、SvgImage和SvgFragmentImage類。在調(diào)用qrcode.make函數(shù)或者實(shí)例化QRCode時(shí)當(dāng)作image_factory參數(shù)的值傳入就可以了。
import qrcode.image.svg
if method =='basic': # Simple factory, just a set of rects.
factory = qrcode.image.svg.SvgImage
elif method =='fragment': # Fragment factory (also just a set of rects)
factory = qrcode.image.svg.SvgFragmentImage
else:
# Combined path factory, fixes white space that may occur when zooming
factory = qrcode.image.svg.SvgPathImage
img = qrcode.make('Some data here', image_factory=factory)
生成 PNG 圖像
執(zhí)行命令安裝pymaging相關(guān)模塊:
pip install git+git://github.com/ojii/pymaging.git#egg=pymaging
pip install git+git://github.com/ojii/pymaging-png.git#egg=pymaging-png
然后給image_factor參數(shù)傳入qrcode.image.pure.PymagingImage就可以生成PNG圖片了。
import qrcode from qrcode.image.pure
importPymagingImage
img = qrcode.make('Some data here', image_factory=PymagingImage)
這是作者推薦的方式,但是我個(gè)人認(rèn)為,完全沒有必要這么麻煩,直接用默認(rèn)的 PIL 就可以獲取 PNG 圖片了,例子看下文。
make 方法
make方法實(shí)際上就是在內(nèi)部調(diào)用了QRCode(要轉(zhuǎn)換的文本).make_image(),最后(默認(rèn))返回了一個(gè)PIL圖像對象。
# 顯示圖片qrcode.make("hello world!").show()
# 保存 PNG 圖片qrcode.make("hello world!").save('hello.png')
run_example 方法
生成一個(gè)作者項(xiàng)目網(wǎng)站地址的二維碼并顯示出來。
-
二維碼
+關(guān)注
關(guān)注
7文章
432瀏覽量
26598 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
85039
原文標(biāo)題:詳解 Python qrcode 二維碼模塊
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
二維碼識別
二維碼軟件中制作Dot Code二維碼的步驟
二維碼在醫(yī)療行業(yè)中的應(yīng)用
固定二維碼與變動二維碼防偽標(biāo)簽的作用
二維碼門禁系統(tǒng)是怎樣的工作原理
訪客的二維碼門禁是否足夠安全
二維碼在智能門禁中的應(yīng)用,二維碼門禁如何保證安全性
![<b class='flag-5'>二維碼</b>在智能門禁中的應(yīng)用,<b class='flag-5'>二維碼</b>門禁如何保證安全性](https://file.elecfans.com/web1/M00/C1/16/o4YBAF8TsL2AZ3HGAAFfWtpqVj4773.png)
工業(yè)二維碼是什么,如何使用工業(yè)二維碼
讀取二維碼掃描設(shè)備有哪些類型
QR二維碼解碼流程與使用方法
二維碼模組用途廣泛 精準(zhǔn)高效識別和讀取條碼、二維碼
![<b class='flag-5'>二維碼</b>模組用途廣泛 精準(zhǔn)高效識別和讀取條碼、<b class='flag-5'>二維碼</b>](https://file.elecfans.com/web2/M00/9B/E4/pYYBAGQj_M-AM8onAADsrhm9ecw715.png)
如何用Python生成自定義二維碼
![如何用<b class='flag-5'>Python</b>生成自定義<b class='flag-5'>二維碼</b>](https://file1.elecfans.com/web2/M00/A2/A8/wKgZomUAKjmAGN-UAACicsCCU7Y569.jpg)
評論