Python二維碼生成庫(kù)qrcode安裝和使用示例
二維碼簡(jiǎn)稱 QR Code(Quick Response Code),學(xué)名為快速響應(yīng)矩陣碼,是二維條碼的一種,由日本的 Denso Wave 公司于 1994 年發(fā)明?,F(xiàn)隨著智能手機(jī)的普及,已廣泛應(yīng)用于平常生活中,例如商品信息查詢、社交好友互動(dòng)、網(wǎng)絡(luò)地址訪問(wèn)等等。
安裝 Python 的二維碼庫(kù) -- qrcode
由于生成 qrcode 圖片需要依賴 Python 的圖像庫(kù),所以需要先安裝 Python 圖像庫(kù) PIL(Python Imaging Library),不然會(huì)遇到 "ImportError: No module named Image" 的錯(cuò)誤:
sudo easy_install pil
如果安裝 pil 時(shí)出現(xiàn)以下錯(cuò)誤:
_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 鏈接變更問(wèn)題,解決如下:
ln -s /usr/local/include/freetype2 /usr/local/include/freetype
sudo easy_install -U pil
安裝 qrcode 庫(kù):
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 會(huì)生成 21 * 21 的二維碼,version 每增加 1,生成的二維碼就會(huì)添加 4 尺寸,例如 version 是 2,則生成 25 * 25 的二維碼。
參數(shù) error_correction 指定二維碼的容錯(cuò)系數(shù),分別有以下4個(gè)系數(shù):
1.ERROR_CORRECT_L: 7%的字碼可被容錯(cuò)
2.ERROR_CORRECT_M: 15%的字碼可被容錯(cuò)
3.ERROR_CORRECT_Q: 25%的字碼可被容錯(cuò)
4.ERROR_CORRECT_H: 30%的字碼可被容錯(cuò)
參數(shù) box_size 表示二維碼里每個(gè)格子的像素大小。
參數(shù) border 表示邊框的格子厚度是多少(默認(rèn)是4)。
運(yùn)行上面代碼會(huì)生成敝站的一個(gè) QR Code:
生成帶有圖標(biāo)的二維碼
二維碼的容錯(cuò)系數(shù)(上面所指的 error_correction)越高,生成的二維碼則可允許的殘缺率越大,且二維碼的數(shù)據(jù)主要保存在圖片的四個(gè)角上,所以在二維碼中間放一個(gè)小圖標(biāo),對(duì)二維碼的識(shí)別也是不受多大影響的。
對(duì)于插入在二維碼上的圖標(biāo)大小,這里指定限制圖標(biāo)的大小尺寸最大是二維碼長(zhǎng)寬的 1/4,以免殘缺太大,影響識(shí)別。
最后結(jié)合 Python 圖像庫(kù)(PIL)的操作,把圖片黏貼(paste)在二維碼圖片的中間,便可以生成一個(gè)帶有圖標(biāo)的二維碼,具體操作代碼如下:
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:本站還提供了一個(gè)功能非常強(qiáng)大的二維碼生成工具,感興趣的朋友可以參考一下:
http://tools.jb51.net/transcoding/jb51qrcode
- python二維碼操作:對(duì)QRCode和MyQR入門詳解
- Python利用myqr庫(kù)創(chuàng)建自己的二維碼
- 用python生成(動(dòng)態(tài)彩色)二維碼的方法(使用myqr庫(kù)實(shí)現(xiàn))
- Python使用MyQR制作專屬動(dòng)態(tài)彩色二維碼功能
- Python使用qrcode二維碼庫(kù)生成二維碼方法詳解
- Python qrcode 生成一個(gè)二維碼的實(shí)例詳解
- Python基于QRCode實(shí)現(xiàn)生成二維碼的方法【下載,安裝,調(diào)用等】
- Python使用QRCode模塊生成二維碼實(shí)例詳解
- python 使用MyQR和qrcode來(lái)制作二維碼
相關(guān)文章
python代碼實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python代碼實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05python調(diào)用自定義函數(shù)的實(shí)例操作
在本文里我們給大家整理了關(guān)于python調(diào)用自定義函數(shù)的實(shí)例操作相關(guān)內(nèi)容,有此需要的朋友們可以學(xué)習(xí)參考下。2019-06-06python數(shù)據(jù)結(jié)構(gòu)樹(shù)和二叉樹(shù)簡(jiǎn)介
這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)樹(shù)和二叉樹(shù)簡(jiǎn)介,需要的朋友可以參考下2014-04-04python3通過(guò)udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作
這篇文章主要介紹了python3通過(guò)udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05使用tensorflow DataSet實(shí)現(xiàn)高效加載變長(zhǎng)文本輸入
今天小編就為大家分享一篇使用tensorflow DataSet實(shí)現(xiàn)高效加載變長(zhǎng)文本輸入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01Tensorflow 定義變量,函數(shù),數(shù)值計(jì)算等名字的更新方式
今天小編就為大家分享一篇Tensorflow 定義變量,函數(shù),數(shù)值計(jì)算等名字的更新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python Yaml、Json、Dict之間的轉(zhuǎn)化
這篇文章主要介紹了python Yaml 、Json 、Dict 之間的轉(zhuǎn)化的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-10-10