茄子詳解 Python qrcode 二維碼模塊

https://github.com/lincolnloo...python

聲明

import qrcode

使用

QRCode 方法

qrcode.QRCode(
    version=1,
    error_correction=qrcode.ERROR_CORRECT_L,
    box_size=10,
    border=4,
    image_factory=None,
    mask_pattern=None
)
參數解釋:
  1. version:控制二維碼的大小,取值範圍從1到40。取最小值1時,二維碼大小爲21*21。取值爲 None (默認)或者使用fit=true參數(默認)時,二維碼會自動調整大小。
  2. error_correction:控制二維碼糾錯級別。git

    1. ERROR_CORRECT_L:大約7%或者更少的錯誤會被更正。
    2. ERROR_CORRECT_M:默認值,大約15%或者更少的錯誤會被更正。
    3. ERROR_CORRECT_Q:大約25%或者更少的錯誤會被更正。
    4. ERROR_CORRECT_H:大約30%或者更少的錯誤會被更正。
  3. box_size:控制二維碼中每一個格子的像素數,默認爲 10。
  4. border:控制二維碼四周留白包含的格子數,默認爲4。
  5. image_factory:選擇生成圖片的形式,默認爲 PIL 圖像。
  6. mask_pattern:選擇生成圖片的的掩模。
方法屬性解釋:

經常使用方法:github

  1. add_data(str,optimize=20):添加要轉換的文字到data參數;若是使用了optimize優化參數,數據將被拆分爲多個塊來進行優化,以找到一個長度至少爲這個值的足夠簡潔的方式來生成二維碼。設置爲「0」以免優化。
  2. make(fit=True):當fit參數爲真或者沒有給出version參數時,將會調用best_fit方法來找到適合數據的最小尺寸。若是沒有設置mask_pattern,將會調用best_mask_pattern方法來找到找到最有效的掩模圖案。最後將這些數據傳遞給makeImpl方法來生成二維碼。qrcode本體的make方法不同的是,這個方法沒有任何返回值。
  3. make_image(fill_color=None, back_color=None,image_factory=None):建立二維碼的圖像並返回,默認爲 PIL 圖像。**

若是要讓二維碼有顏色,能夠在這裏設置。**數組

  1. clear:清空數據
  2. get_matrix:返回二維碼數組。
  3. print_ascii(out=None, tty=False, invert=False):這個方法就比較有趣了,能夠用字符畫的形式來輸出二維碼,可是掃的時候通常都掃不出來。image其中的invert參數是決定是否反轉顏色的參數,默認爲假,若是爲真的話會這樣:image

其餘方法:svg

  1. best_fit(start=self.version):找到適合數據所需的最小尺寸。
  2. best_mask_pattern():找到最有效的掩模圖案。
  3. makeImpl(test, mask_pattern):生成二維碼的直接函數
  4. map_data:(內部函數,無需瞭解)
  5. print_tty(out=None):用TTY顏色輸出二維碼,若是沒有給出out參數,會使用sys.stdout
  6. setup_position_adjust_pattern:(內部函數,無需瞭解)
  7. setup_position_probe_pattern:(內部函數,無需瞭解)
  8. setup_timing_pattern:(內部函數,無需瞭解)
  9. setup_type_info:(內部函數,無需瞭解)
  10. setup_type_number:(內部函數,無需瞭解)

屬性(這些你們基本都不用管):函數

  1. border:
  2. box_size:
  3. data_cache:
  4. data_list:
  5. error_correction:
  6. image_factory:
  7. mask_pattern:
  8. modules:
  9. modules_count:
  10. version:

生成 SVG 圖像

qrcode能夠生成三種不一樣的svg圖像,一種是用路徑表示的svg,一種是用矩形集合表示的完整svg文件,還有一種是用矩形集合表示的svg片斷。第一種用路徑表示的svg其實就是矢量圖,能夠在圖像放大的時候能夠保持圖片質量,而另外兩種可能會在格子之間出現空隙。 oop

這三種分別對應了svg.py中的SvgPathImage、SvgImage和SvgFragmentImage類。在調用qrcode.make函數或者實例化QRCode時看成image_factory參數的值傳入就能夠了。優化

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 圖像

執行命令安裝pymaging相關模塊:網站

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參數傳入qrcode.image.pure.PymagingImage就能夠生成PNG圖片了。spa

import qrcode
from qrcode.image.pure import PymagingImage
img = qrcode.make('Some data here', image_factory=PymagingImage)

這是做者推薦的方式,可是我我的認爲,徹底沒有必要這麼麻煩,直接用默認的 PIL 就能夠獲取 PNG 圖片了,例子看下文。

make 方法

make方法實際上就是在內部調用了QRCode(要轉換的文本).make_image(),最後(默認)返回了一個PIL圖像對象。

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

run_example 方法

生成一個做者項目網站地址的二維碼並顯示出來。

翻譯自做者的Github地址中的 README 和具體代碼註釋。

相關文章
相關標籤/搜索