程序員的樂趣,生成自定義二維碼,5行Python代碼就搞定

作者: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 ——

精選推薦

印度下黑手!59款中國APP被禁用,微信微博QQ抖音等在列

爲什麼美國程序員工作比中國程序員工作輕鬆、加班少?

一二線城市知名 IT 互聯網公司名單(新版)

來了!8M/S+速度,Pdown復活!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章