作者:Arindom Bhattacharjee
隨着互聯網和智能移動設備不斷普及,二維碼(Quick Response code)已經成爲世界上應用最爲廣泛的信息載體之一。生成二維碼的工具也層出不窮,但多數需要在線完成,並且生成的圖案也千篇一律,過於單調。
那麼有沒有辦法實現自定義生成二維碼呢?
近日,一位熱衷於終身學習的工程師兼攝影師 Arindom Bhattacharjee 撰寫了一篇自定義生成二維碼的方法,並且整個生成過程只需要 5 行 Python 代碼即可完成。感興趣的讀者可以自己實現下。
5 行 Python 代碼自定義生成二維碼
二維碼(QR Code)由白色背景上的黑色網格方塊組成。由於它能存儲更多信息,並且具有快速可讀性,因此比條形碼更受歡迎。
Python 提供了一個可以輕鬆實現這樣的功能的 qrcode 包,首先就從下載 Python 包開始:
pip install pillow
pip install qrcode
然後創建一個存儲之前文章頁面鏈接(https://towardsdatascience.com/face-detection-in-10-lines-for-beginners-1787aa1d9127)的二維碼,來看下實現過程有多簡單:
import qrcode
# Link for website
input_data = "https://towardsdatascience.com/face-detection-in-10-lines-for-beginners-1787aa1d9127"
#Creating an instance of qrcode
qr = qrcode.QRCode(
version=1,
box_size=10,
border=5)
qr.add_data(input_data)
qr.make(fit=True)
img = qr.make_image(fill='black', back_color='white')
img.save('qrcode001.png')
這樣,只需要簡單的幾步,就創建了可以鏈接到之前文章的二維碼,如下所示:
通過微信掃一掃,就可以鏈接到之前的文章:
使用到的具體參數
在具體的實現過程中,以上代碼中的 QRCode 函數需要以下參數:
-
version:定義了生成二維碼的尺寸,它的取值範圍是 1 到 40 的整數。該參數的值越大,生成的二維碼圖像就越大;
-
box_size:定義了每個像素塊的大小;
-
border:定義了邊框的厚度。比如,當它的值是 5,就意味着邊框的厚度相當於 5 個小像素塊;
add_data 方法用來傳入輸入文本,在本示例中即爲之前文章的超鏈接。make(fit=True) 函數確保整個二維碼都被用到,即使輸入數據能用更少的像素塊存儲也是如此。
最後一步是將其轉換爲圖像文件並存儲。make_image 函數可以用來指定圖像中的前景色和背景色。在此二維碼中分別用了黑色和白色,但也可以根據個人喜好改變顏色。save 函數將圖像存儲爲當前目錄下的. png 文件。
生成二維碼的 Python 庫:qrcode
本文作者 5 行代碼生成二維碼的過程中基於了 qrcode 庫,該庫於在 2016 年 11 月由 GitHub 用戶 sylnsfar 推出,目前已有 7.4k 的 star 量和 1.2k 的 fork 量。
GitHub 地址:https://github.com/sylnsfar/qrcode
該庫在 Python 3 版本上運行,並且可以生成多種類型的二維碼,如普通二維碼、帶圖片的藝術二維碼(黑白與彩色)和動態二維碼(黑白與彩色)。它比較適合直接用於生成二維碼圖片的場景。
我們這裏只看一下該庫生成二維碼的示例:
普通二維碼
帶圖片的藝術二維碼
動態二維碼
想要了解具體安裝方法和代碼的讀者可以參考 GitHub 項目主頁。
原文鏈接:https://towardsdatascience.com/generate-qrcode-with-python-in-5-lines-42eda283f325
—— END ——
精選推薦