0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python圖和處理二維碼?

馬哥Linux運維 ? 來源:未知 ? 作者:李倩 ? 2018-07-25 17:11 ? 次閱讀

聲明

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時,二維碼大小為21*21。取值為 None (默認)或者使用fit=true參數(shù)(默認)時,二維碼會自動調(diào)整大小。

2、error_correction:控制二維碼糾錯級別。

ERRORCORRECTL:大約7%或者更少的錯誤會被更正。

ERRORCORRECTM:默認值,大約15%或者更少的錯誤會被更正。

ERRORCORRECTQ:大約25%或者更少的錯誤會被更正。

ERRORCORRECTH:大約30%或者更少的錯誤會被更正。

3、box_size:控制二維碼中每個格子的像素數(shù),默認為 10。

4、border:控制二維碼四周留白包含的格子數(shù),默認為4。

5、image_factory:選擇生成圖片的形式,默認為 PIL 圖像。

6、mask_pattern:選擇生成圖片的的掩模。

方法屬性解釋

常用方法:

1、add_data(str,optimize=20):添加要轉(zhuǎn)換的文字到data參數(shù);如果使用了optimize優(yōu)化參數(shù),數(shù)據(jù)將被拆分為多個塊來進行優(yōu)化,以找到一個長度至少為這個值的足夠簡潔的方式來生成二維碼。設(shè)置為“0”以避免優(yōu)化。

2、make(fit=True):當fit參數(shù)為真或者沒有給出version參數(shù)時,將會調(diào)用bestfit方法來找到適合數(shù)據(jù)的最小尺寸。如果沒有設(shè)置maskpattern,將會調(diào)用bestmaskpattern方法來找到找到最有效的掩模圖案。最后將這些數(shù)據(jù)傳遞給makeImpl方法來生成二維碼。與qrcode本體的make方法不一樣的是,這個方法沒有任何返回值。

3、makeimage(fillcolor=None, backcolor=None,imagefactory=None):創(chuàng)建二維碼的圖像并返回,默認為 PIL 圖像。如果要讓二維碼有顏色,可以在這里設(shè)置。

4、clear:清空數(shù)據(jù)

5、get_matrix:返回二維碼數(shù)組。

6、print_ascii(out=None, tty=False, invert=False):這個方法就比較有趣了,可以用字符畫的形式來輸出二維碼,但是掃的時候一般都掃不出來。

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

其他方法:

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其實就是矢量圖,可以在圖像放大的時候可以保持圖片質(zhì)量,而另外兩種可能會在格子之間出現(xiàn)空隙。

這三種分別對應(yīng)了svg.py中的SvgPathImage、SvgImage和SvgFragmentImage類。在調(diào)用qrcode.make函數(shù)或者實例化QRCode時當作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)

這是作者推薦的方式,但是我個人認為,完全沒有必要這么麻煩,直接用默認的 PIL 就可以獲取 PNG 圖片了,例子看下文。

make 方法

make方法實際上就是在內(nèi)部調(diào)用了QRCode(要轉(zhuǎn)換的文本).make_image(),最后(默認)返回了一個PIL圖像對象。

# 顯示圖片qrcode.make("hello world!").show()

# 保存 PNG 圖片qrcode.make("hello world!").save('hello.png')

run_example 方法

生成一個作者項目網(wǎng)站地址的二維碼并顯示出來。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 二維碼
    +關(guān)注

    關(guān)注

    7

    文章

    403

    瀏覽量

    26347
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4758

    瀏覽量

    84289

原文標題:詳解 Python qrcode 二維碼模塊

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    二維碼的算法?

    想用51做一個能將簡單數(shù)字生成二維碼圖片在LED彩屏顯示。問一下二維碼的算法?51單片機能處理嗎?請教高手了。
    發(fā)表于 03-30 20:14

    二維碼識別

    `利用筆記本電腦的攝像頭采集二維碼圖像并識別,顯示二維碼的信息!下載了labview視覺與運動模塊的可以下來看看!里面有2張二維碼,用二維碼生成器做的(百度應(yīng)用),用手機拍
    發(fā)表于 08-27 16:52

    二維碼軟件中制作Dot Code二維碼的步驟

      在二維碼軟件中,點擊軟件左側(cè)的“二維碼”按鈕,在畫布上繪制二維碼樣式,雙擊二維碼,在圖形屬性-條碼選項卡中,設(shè)置條碼類型為Dot Code。    在選項卡中,點擊“修改”按鈕,刪
    發(fā)表于 12-02 15:45

    二維碼在醫(yī)療行業(yè)中的應(yīng)用

      二維碼應(yīng)用領(lǐng)域越來越廣泛,從人們的日常生活到各個行業(yè)的方方面面,隨處可見二維碼的身影?,F(xiàn)在,二維
    發(fā)表于 10-13 17:05 ?1204次閱讀

    固定二維碼與變動二維碼防偽標簽的作用

    電子發(fā)燒友網(wǎng)站提供《固定二維碼與變動二維碼防偽標簽的作用.docx》資料免費下載
    發(fā)表于 05-08 08:00 ?1次下載

    二維碼門禁系統(tǒng)是怎樣的工作原理

    安裝二維碼智能門禁,并不是說直接把傳統(tǒng)的門禁給拆除。完全可以在傳統(tǒng)門閘機器上嵌入一個二維碼門禁讀卡器,然后就可以融合二維碼自動識別和數(shù)據(jù)傳輸性能,之后再根據(jù)互聯(lián)網(wǎng)技術(shù)和二維碼自動識別技
    發(fā)表于 03-19 16:54 ?5856次閱讀

    訪客的二維碼門禁是否足夠安全

    二維碼已經(jīng)成為現(xiàn)代人的一種生活方式,我們使用二維碼支付、通行、傳輸信息。對于訪客二維碼門禁是否安全的問題?需要從兩個維度來說明,二維碼識別是否安全?給訪客授予進出門禁權(quán)限的
    發(fā)表于 06-05 10:58 ?844次閱讀

    二維碼在智能門禁中的應(yīng)用,二維碼門禁如何保證安全性

    如今二維碼已經(jīng)是一種生活方式,支付、交友、出行、門禁。..。..無處不在,每年我們會消耗二維碼超萬億個,100天,騰訊健康量達1400億個。那問題來了,如此大的用
    的頭像 發(fā)表于 07-19 10:33 ?3741次閱讀
    <b class='flag-5'>二維碼</b>在智能門禁中的應(yīng)用,<b class='flag-5'>二維碼</b>門禁如何保證安全性

    工業(yè)二維碼是什么,如何使用工業(yè)二維碼

    工業(yè)二維碼讀取器在智能制造業(yè)領(lǐng)域的作用越來越重要,為了讓多用戶了解工業(yè)二維碼的相關(guān)知識,從而大限度地提高讀取率、增加產(chǎn)量和降低成本,讓你對工業(yè)二維碼讀取器和工業(yè)二維碼知識進行面的了解。
    發(fā)表于 06-24 17:41 ?4438次閱讀

    讀取二維碼掃描設(shè)備有哪些類型

    讀取二維碼掃描設(shè)備的幾種類型中比較簡單、常用的便是收銀用條碼掃描槍,因此它也被稱為二維碼設(shè)備/二維碼讀取設(shè)備/二維碼掃描器。據(jù)了解,二維碼
    發(fā)表于 07-06 10:09 ?4005次閱讀

    QR二維碼解碼流程與使用方法

    二維碼、條形碼相信大家都非常熟悉了,條碼技術(shù)已經(jīng)廣泛應(yīng)用于我們生活當中。微信掃二維碼、支付寶二維碼付款、商品條形碼、超市儲物柜條形碼等。但是由于二維碼復雜度,目前識別
    的頭像 發(fā)表于 07-22 10:15 ?1w次閱讀

    二維碼模組用途廣泛 精準高效識別和讀取條碼、二維碼

    二維碼模組是一種集成了CMOS感光器件和專用鏡頭模組的微型掃碼頭設(shè)備,通常采用CMOS紅光影像式讀取,所發(fā)出的是一個矩形的紅光區(qū)域,旁邊會有輔助光,具有圖像捕捉功能,通過拍照的方式來識別和讀取
    的頭像 發(fā)表于 03-29 17:12 ?1132次閱讀
    <b class='flag-5'>二維碼</b>模組用途廣泛 精準高效識別和讀取條碼、<b class='flag-5'>二維碼</b>

    二維碼讀頭有什么功能?如何選擇二維碼讀頭?

    二維碼讀頭有什么功能?如何選擇二維碼讀頭?二維碼讀頭可以將二維條碼圖像通過感光頭讀取、識
    的頭像 發(fā)表于 03-30 15:03 ?1722次閱讀
    <b class='flag-5'>二維碼</b>掃<b class='flag-5'>碼</b>讀頭有什么功能?如何選擇<b class='flag-5'>二維碼</b>讀頭?

    如何用Python生成自定義二維碼

    的黑白二維碼 from MyQr import myqrMyQR.run( 'https://www.python.org/' ,save_name= r"D:demo_png.png" ) 在上面
    的頭像 發(fā)表于 09-12 17:11 ?748次閱讀
    如何用<b class='flag-5'>Python</b>生成自定義<b class='flag-5'>二維碼</b>

    Labview生成二維碼

    ?Labview 的一個Demo,生成二維碼
    發(fā)表于 08-01 17:12 ?6次下載