Python使用qrcode二維碼庫(kù)生成二維碼方法詳解
安裝qrcode庫(kù)
pip install qrcode
聲明
import qrcode
使用qrcode
QRCode 方法
qrcode.QRCode( version=1, error_correction=qrcode.ERROR_CORRECT_L, box_size=10, border=4, image_factory=None, mask_pattern=None )
參數(shù)解釋:
- version:控制二維碼的大小,取值范圍從1到40。取最小值1時(shí),二維碼大小為21*21。取值為 None (默認(rèn))或者使用fit=true參數(shù)(默認(rèn))時(shí),二維碼會(huì)自動(dòng)調(diào)整大小。
- error_correction:控制二維碼糾錯(cuò)級(jí)別。
ERROR_CORRECT_L:大約7%或者更少的錯(cuò)誤會(huì)被更正。
ERROR_CORRECT_M:默認(rèn)值,大約15%或者更少的錯(cuò)誤會(huì)被更正。
ERROR_CORRECT_Q:大約25%或者更少的錯(cuò)誤會(huì)被更正。
ERROR_CORRECT_H:大約30%或者更少的錯(cuò)誤會(huì)被更正。
- box_size:控制二維碼中每個(gè)格子的像素?cái)?shù),默認(rèn)為 10。
- border:控制二維碼四周留白包含的格子數(shù),默認(rèn)為4。
- image_factory:選擇生成圖片的形式,默認(rèn)為 PIL 圖像。
- mask_pattern:選擇生成圖片的的掩模。
qrcode方法屬性解釋:
常用方法:
- add_data(str,optimize=20):添加要轉(zhuǎn)換的文字到data參數(shù);如果使用了optimize優(yōu)化參數(shù),數(shù)據(jù)將被拆分為多個(gè)塊來(lái)進(jìn)行優(yōu)化,以找到一個(gè)長(zhǎng)度至少為這個(gè)值的足夠簡(jiǎn)潔的方式來(lái)生成二維碼。設(shè)置為“0”以避免優(yōu)化。
- make(fit=True):當(dāng)fit參數(shù)為真或者沒(méi)有給出version參數(shù)時(shí),將會(huì)調(diào)用best_fit方法來(lái)找到適合數(shù)據(jù)的最小尺寸。如果沒(méi)有設(shè)置mask_pattern,將會(huì)調(diào)用best_mask_pattern方法來(lái)找到找到最有效的掩模圖案。最后將這些數(shù)據(jù)傳遞給makeImpl方法來(lái)生成二維碼。與qrcode本體的make方法不一樣的是,這個(gè)方法沒(méi)有任何返回值。
- make_image(fill_color=None, back_color=None,image_factory=None):創(chuàng)建二維碼的圖像并返回,默認(rèn)為 PIL 圖像。如果要讓二維碼有顏色,可以在這里設(shè)置fill_color, back_color
- clear:清空數(shù)據(jù)
- get_matrix:返回二維碼數(shù)組。
- print_ascii(out=None, tty=False, invert=False):這個(gè)方法就比較有趣了,可以用字符畫的形式來(lái)輸出二維碼,但是掃的時(shí)候一般都掃不出來(lái)。

其中的invert參數(shù)是決定是否反轉(zhuǎn)顏色的參數(shù),默認(rèn)為假,如果為真的話會(huì)這樣:

其他方法:
- best_fit(start=self.version):找到適合數(shù)據(jù)所需的最小尺寸。
- best_mask_pattern():找到最有效的掩模圖案。
- makeImpl(test, mask_pattern):生成二維碼的直接函數(shù)
- map_data:(內(nèi)部函數(shù),無(wú)需了解)
- print_tty(out=None):用TTY顏色輸出二維碼,如果沒(méi)有給出out參數(shù),會(huì)使用sys.stdout。
- setup_position_adjust_pattern:(內(nèi)部函數(shù),無(wú)需了解)
- setup_position_probe_pattern:(內(nèi)部函數(shù),無(wú)需了解)
- setup_timing_pattern:(內(nèi)部函數(shù),無(wú)需了解)
- setup_type_info:(內(nèi)部函數(shù),無(wú)需了解)
- setup_type_number:(內(nèi)部函數(shù),無(wú)需了解)
屬性(這些大家基本都不用管):
- border:
- box_size:
- data_cache:
- data_list:
- error_correction:
- image_factory:
- mask_pattern:
- modules:
- modules_count:
- version:
生成 SVG 圖像
qrcode可以生成三種不同的svg圖像,一種是用路徑表示的svg,一種是用矩形集合表示的完整svg文件,還有一種是用矩形集合表示的svg片段。第一種用路徑表示的svg其實(shí)就是矢量圖,可以在圖像放大的時(shí)候可以保持圖片質(zhì)量,而另外兩種可能會(huì)在格子之間出現(xiàn)空隙。
這三種分別對(duì)應(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 import PymagingImage
img = qrcode.make('Some data here', image_factory=PymagingImage)
這是作者推薦的方式,但是我個(gè)人認(rèn)為,完全沒(méi)有必要這么麻煩,直接用默認(rèn)的 PIL 就可以獲取 PNG 圖片了,例子看下文。
make 方法
make方法實(shí)際上就是在內(nèi)部調(diào)用了QRCode(要轉(zhuǎn)換的文本).make_image(),最后(默認(rèn))返回了一個(gè)PIL圖像對(duì)象。
# 顯示圖片
qrcode.make("hello world!").show()
# 保存 PNG 圖片
qrcode.make("hello world!").save('hello.png')
run_example 方法
生成一個(gè)作者項(xiàng)目網(wǎng)站地址的二維碼并顯示出來(lái)。
更多關(guān)于Python使用qrcode二維碼庫(kù)生成二維碼方法請(qǐng)查看下面的相關(guān)鏈接
相關(guān)文章
利用python爬取古詩(shī)文網(wǎng)中各類古詩(shī)的方法
這篇文章主要介紹了利用python爬取古詩(shī)文網(wǎng)中各類古詩(shī)的方法,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03
Python Selenium 之關(guān)閉窗口close與quit的方法
今天小編就為大家分享一篇Python Selenium 之關(guān)閉窗口close與quit的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
Python中的random.choices函數(shù)用法詳解
這篇文章主要給大家介紹了關(guān)于Python中random.choices函數(shù)用法的相關(guān)資料,random.random()?的功能是隨機(jī)返回一個(gè)?0-1范圍內(nèi)的浮點(diǎn)數(shù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
python模擬實(shí)現(xiàn)分發(fā)撲克牌
這篇文章主要為大家詳細(xì)介紹了python模擬實(shí)現(xiàn)分發(fā)撲克牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
用實(shí)例分析Python中method的參數(shù)傳遞過(guò)程
這篇文章主要介紹了用實(shí)例分析Python中method的參數(shù)傳遞過(guò)程,包括instancemethod和staticmethod等實(shí)例,需要的朋友可以參考下2015-04-04
python多進(jìn)程提取處理大量文本的關(guān)鍵詞方法
今天小編就為大家分享一篇python多進(jìn)程提取處理大量文本的關(guān)鍵詞方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
python snownlp情感分析簡(jiǎn)易demo(分享)
下面小編就為大家?guī)?lái)一篇python snownlp情感分析簡(jiǎn)易demo(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
python數(shù)組處理之最值與下標(biāo)問(wèn)題
這篇文章主要介紹了python數(shù)組處理之最值與下標(biāo)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05

