1. 程式人生 > 程式設計 >Python使用qrcode二維碼庫生成二維碼方法詳解

Python使用qrcode二維碼庫生成二維碼方法詳解

安裝qrcode庫

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
)

引數解釋:

  • version:控制二維碼的大小,取值範圍從1到40。取最小值1時,二維碼大小為21*21。取值為 None (預設)或者使用fit=true引數(預設)時,二維碼會自動調整大小。
  • error_correction:控制二維碼糾錯級別。

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

    ERROR_CORRECT_M:預設值,大約15%或者更少的錯誤會被更正。

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

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

  • box_size:控制二維碼中每個格子的畫素數,預設為 10。
  • border:控制二維碼四周留白包含的格子數,預設為4。
  • image_factory:選擇生成圖片的形式,預設為 PIL 影象。
  • mask_pattern:選擇生成圖片的的掩模。

qrcode方法屬性解釋:

常用方法:

  • add_data(str,optimize=20):新增要轉換的文字到data引數;如果使用了optimize優化引數,資料將被拆分為多個塊來進行優化,以找到一個長度至少為這個值的足夠簡潔的方式來生成二維碼。設定為“0”以避免優化。
  • make(fit=True):當fit引數為真或者沒有給出version引數時,將會呼叫best_fit方法來找到適合資料的最小尺寸。如果沒有設定mask_pattern,將會呼叫best_mask_pattern方法來找到找到最有效的掩模圖案。最後將這些資料傳遞給makeImpl方法來生成二維碼。與qrcode本體的make方法不一樣的是,這個方法沒有任何返回值。
  • make_image(fill_color=None,back_color=None,image_factory=None):建立二維碼的影象並返回,預設為 PIL 影象。如果要讓二維碼有顏色,可以在這裡設定fill_color,back_color
  • clear:清空資料
  • get_matrix:返回二維碼陣列。
  • print_ascii(out=None,tty=False,invert=False):這個方法就比較有趣了,可以用字元畫的形式來輸出二維碼,但是掃的時候一般都掃不出來。

Python使用qrcode二維碼庫生成二維碼方法詳解

其中的invert引數是決定是否反轉顏色的引數,預設為假,如果為真的話會這樣:

Python使用qrcode二維碼庫生成二維碼方法詳解

其他方法:

  • best_fit(start=self.version):找到適合資料所需的最小尺寸。
  • best_mask_pattern():找到最有效的掩模圖案。
  • makeImpl(test,mask_pattern):生成二維碼的直接函式
  • map_data:(內部函式,無需瞭解)
  • print_tty(out=None):用TTY顏色輸出二維碼,如果沒有給出out引數,會使用sys.stdout。
  • setup_position_adjust_pattern:(內部函式,無需瞭解)
  • setup_position_probe_pattern:(內部函式,無需瞭解)
  • setup_timing_pattern:(內部函式,無需瞭解)
  • setup_type_info:(內部函式,無需瞭解)
  • setup_type_number:(內部函式,無需瞭解)

屬性(這些大家基本都不用管):

  • border:
  • box_size:
  • data_cache:
  • data_list:
  • error_correction:
  • image_factory:
  • mask_pattern:
  • modules:
  • modules_count:
  • version:

生成 SVG 影象

qrcode可以生成三種不同的svg影象,一種是用路徑表示的svg,一種是用矩形集合表示的完整svg檔案,還有一種是用矩形集合表示的svg片段。第一種用路徑表示的svg其實就是向量圖,可以在影象放大的時候可以保持圖片質量,而另外兩種可能會在格子之間出現空隙。

這三種分別對應了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圖片了。

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 方法

生成一個作者專案網站地址的二維碼並顯示出來。

更多關於Python使用qrcode二維碼庫生成二維碼方法請檢視下面的相關連結