Python二維碼生成庫qrcode安裝和使用示例
二維碼簡稱 QR Code(Quick Response Code),學名為快速響應矩陣碼,是二維條碼的一種,由日本的 Denso Wave 公司于 1994 年發(fā)明。現(xiàn)隨著智能手機的普及,已廣泛應用于平常生活中,例如商品信息查詢、社交好友互動、網(wǎng)絡地址訪問等等。
安裝 Python 的二維碼庫 -- qrcode
由于生成 qrcode 圖片需要依賴 Python 的圖像庫,所以需要先安裝 Python 圖像庫 PIL(Python Imaging Library),不然會遇到 "ImportError: No module named Image" 的錯誤:
sudo easy_install pil
如果安裝 pil 時出現(xiàn)以下錯誤:
_imagingft.c:73:10: fatal error: 'freetype/fterrors.h' file not found
#include <freetype/fterrors.h>
^
1 error generated.
error: Setup script exited with error: command 'cc' failed with exit status 1
在 StackOverflow 上發(fā)現(xiàn)是 Mac 下所依賴的 FreeType 鏈接變更問題,解決如下:
ln -s /usr/local/include/freetype2 /usr/local/include/freetype
sudo easy_install -U pil
安裝 qrcode 庫:
sudo easy_install qrcode
成功安裝后,即可以在終端里使用 qr 命令生成二維碼了:
qr "Just a test" > test.png
qr --help
示例代碼
import qrcode
qr = qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=1
)
qr.add_data("http://jb51.net/")
qr.make(fit=True)
img = qr.make_image()
img.save("dhqme_qrcode.png")
參數(shù) version 表示生成二維碼的尺寸大小,取值范圍是 1 至 40,最小尺寸 1 會生成 21 * 21 的二維碼,version 每增加 1,生成的二維碼就會添加 4 尺寸,例如 version 是 2,則生成 25 * 25 的二維碼。
參數(shù) error_correction 指定二維碼的容錯系數(shù),分別有以下4個系數(shù):
1.ERROR_CORRECT_L: 7%的字碼可被容錯
2.ERROR_CORRECT_M: 15%的字碼可被容錯
3.ERROR_CORRECT_Q: 25%的字碼可被容錯
4.ERROR_CORRECT_H: 30%的字碼可被容錯
參數(shù) box_size 表示二維碼里每個格子的像素大小。
參數(shù) border 表示邊框的格子厚度是多少(默認是4)。
運行上面代碼會生成敝站的一個 QR Code:

生成帶有圖標的二維碼
二維碼的容錯系數(shù)(上面所指的 error_correction)越高,生成的二維碼則可允許的殘缺率越大,且二維碼的數(shù)據(jù)主要保存在圖片的四個角上,所以在二維碼中間放一個小圖標,對二維碼的識別也是不受多大影響的。
對于插入在二維碼上的圖標大小,這里指定限制圖標的大小尺寸最大是二維碼長寬的 1/4,以免殘缺太大,影響識別。
最后結合 Python 圖像庫(PIL)的操作,把圖片黏貼(paste)在二維碼圖片的中間,便可以生成一個帶有圖標的二維碼,具體操作代碼如下:
import Image
import qrcode
qr = qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=1
)
qr.add_data("http://jb51.net/")
qr.make(fit=True)
img = qr.make_image()
img = img.convert("RGBA")
icon = Image.open("favicon.png")
img_w, img_h = img.size
factor = 4
size_w = int(img_w / factor)
size_h = int(img_h / factor)
icon_w, icon_h = icon.size
if icon_w > size_w:
icon_w = size_w
if icon_h > size_h:
icon_h = size_h
icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
w = int((img_w - icon_w) / 2)
h = int((img_h - icon_h) / 2)
img.paste(icon, (w, h), icon)
img.save("dhqme_qrcode.png")

PS:本站還提供了一個功能非常強大的二維碼生成工具,感興趣的朋友可以參考一下:
相關文章
python將數(shù)據(jù)插入數(shù)據(jù)庫的代碼分享
在本篇文章里小編給大家整理的是關于python將數(shù)據(jù)插入數(shù)據(jù)庫的代碼內容,有興趣的朋友們可以參考下。2020-08-08
詳解Python中的分組函數(shù)groupby和itertools)
這篇文章主要介紹了Python中的分組函數(shù)groupby和itertools)的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2018-07-07
Python實現(xiàn)Microsoft Office自動化的幾種方式及對比詳解
辦公自動化是指利用現(xiàn)代化設備和技術,代替辦公人員的部分手動或重復性業(yè)務活動,優(yōu)質而高效地處理辦公事務,實現(xiàn)對信息的高效利用,進而提高生產(chǎn)率,實現(xiàn)輔助決策的目的,所以本文給大家介紹了Python實現(xiàn)Microsoft Office自動化的幾種方式,需要的朋友可以參考下2025-03-03
python格式化輸出保留2位小數(shù)的實現(xiàn)方法
這篇文章主要介紹了python格式化輸出保留2位小數(shù)的實現(xiàn)方法,需要的朋友可以參考下2019-07-07
Pyspider進行API接口抓取和數(shù)據(jù)采集的實現(xiàn)
Pyspider是一個基于Python的強大的網(wǎng)絡爬蟲框架,它提供了豐富的功能和靈活的擴展性,使我們可以輕松地進行數(shù)據(jù)的抓取和處理,本文主要介紹了Pyspider進行API接口抓取和數(shù)據(jù)采集的實現(xiàn),感興趣的可以了解一下2023-09-09
Python實現(xiàn)B站UP主自動監(jiān)控功能詳解
眾所周知,B站有很多有趣的UP主,可以教大家一些"實用"的知識,但是他們一般都沒有固定的更新時間。因此,本文將用Python編寫一個腳本,自動監(jiān)控UP是否更新了視頻,感興趣的可以了解一下2022-03-03

