Python 生成QRcode 二維碼(Error correction)

應用篇

這篇文章是要來介紹如何使用Python的library qrcode來產生QRcode(二維碼)。

qrcode

首先,要介紹的是Python裡面的qrcode這個library。只要使用這個library就可以輕鬆生成QRcode。qrcode這個library在下面連結中有詳細說明,如果有興趣的人可以看一下。

https://github.com/lincolnloop/python-qrcode

qrcode PyPI

只要輸入下面的command就可以下載qrcode了。另外,pillow也可以同時下載。

pip install qrcode[pil]

生成以及儲存QR code

使用方法

我們會先import qrcode,接著生成qrcode.QRCode() object,用add_data設定你要的data,最後用make_image就可以生成QR code了。因為make_image所return的值事pillow的image object,所以可以直接用show來確認,或是可以用save將它儲存。

下面的代碼是將本部落格的首頁做成QR code的代碼。另外,make_image的參數可以調整QR code的顏色以及背景的顏色。

import qrcode
 
qr = qrcode.QRCode()
qr.add_data('https://python-ecw.com/')
img = qr.make_image(fill_color="black", back_color="white")
img.show()
img.save("sample.jpg")

QR code的設定

在生成QR code的時候也有很多可以自己設定的地方,例如:大小,版本,邊線粗細等等。

box_size: 可以設定QR code的各個box的像素數。

border: 可以設定QR code邊線粗細(default是最細的4)。

version: 可以設定QR code的版本。

另外,QR code還有可儲存大量資訊,能顯示多種不同文字以及有自動糾錯能力(Error correction)。雖然這邊沒有支援等級S的糾錯能力,但是也有下面四種不同等級的糾錯能力。預設等級是M。

  • ERROR_CORRECT_L: 可以訂正約7%以下的錯誤。
  • ERROR_CORRECT_M: 可以訂正約15%以下的錯誤。
  • ERROR_CORRECT_Q: 可以訂正約25%以下的錯誤。
  • ERROR_CORRECT_H: 可以訂正約30%以下的錯誤。

以下的代碼是將QR code設定為版本7,box_size: 6,糾錯能力30%,邊線7的代碼。

import qrcode
 
qr = qrcode.QRCode(version=7, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=6, border=7)
qr.add_data('https://python-ecw.com/')
img = qr.make_image(fill_color="black", back_color="white")
img.show()
img.save("sample.jpg")

QR code中間顯示圖片

有時候可以看到有些QR code中間有顯示店家商標,這邊的話可以利用qrcode的embeded_image_path來將圖片放在QR code的正中心。但是這有可能導致QR code無法被讀取,所以官方並不推薦這個用法,請各位要注意。

import qrcode
from qrcode.image.styledpil import StyledPilImage
 
qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_L)
qr.add_data('https://python-ecw.com/')
img = qr.make_image(image_factory=StyledPilImage, embeded_image_path="20160918IMG_3282.JPG")
img.save("embeded.jpg")

留言