qrcode 5.3
二維碼圖像生成器
Pure Python二維碼生成器
這個模塊須要引用圖像庫,默認使用python的PIL庫去生成二維碼(沒有找到Image模塊的請安裝PIL庫)
建議使用pillow模塊而不是PIL本身
什么是二維碼
二維碼是一種用于快速閱讀和較大容量信息存儲的快速響應二維圖形代碼,通過在白色的背景上排列黑色的方塊組成,可以編碼任何種類信息的數(shù)據(jù)(例如:二進制,字母數(shù)字或者漢字符號等等)
安裝qrcode模塊
pip install qrcode
用法
直接通過命令行使用已經(jīng)安裝的qr腳本來生成二維碼
qr "qrcode content" > test.png
或者在python中,通過make()方法創(chuàng)建二維碼
import qrcode
img = qrcode.make('some data here')
高級用法
使用QRCode類,來對二維碼做更多控制,例如:
import qrcode
qr = qrcode.QRCode(
version=1, ## 邊長格數(shù) :21+ (version-1) * 4
error_correction=qrcode.constants.ERROR_CORRECT_L, ## 容錯率 L M Q H
box_size=10, ## 單元格,方塊邊長像素
border=4, ## 邊框像素大小 = border * box_size
)
qr.add_data('Some data')
qr.make(fit=True)
img = qr.make_image()
參數(shù)說明
-
version參數(shù) :version是范圍為[1~40]的整型參數(shù),用于控制二維碼的大小(最小值為1,表示一個大小為21 * 21的二維碼,如果想自動確定生成,那么將該值設置為none,并且設置make()方法的fit參數(shù)為True即可)
補充說明:上面21 * 21是指橫向縱向各有21個方塊,不是指21像素;version參數(shù)每增加1,橫縱向各增加4個方塊,計算公式 : 21+(version-1) * 4 - error_correction參數(shù) : error_correction用于控制二維碼的容錯率,qrcode模塊在中有4個可用的常量參數(shù):
ERROR_CORRECT_L # 小于或約等于 7% 的容錯率
ERROR_CORRECT_M # 小于或約等于 15% 的容錯率
ERROR_CORRECT_Q # 小于或約等于 25% 的容錯率
ERROR_CORRECT_H # 小于或約等于 30% 的容錯率
- box_size參數(shù) : box_size是指二維碼中每個黑白方塊所的邊長的像素值
- border參數(shù) : border用于控制二維碼的邊框為幾個box_size的長度,默認值為4,是標準規(guī)定的最小值,低于4也是可以的,建議為4
其他Image圖像工廠
你可以將二維碼圖像編碼為SVG格式,或者使用新的Pure Python PNG圖像處理器將二維碼圖像編碼為PNG格式
下面的Python示例使用make()方法用法,對于更高級的用法,可以使用image_factory()方法并設置有效的關鍵字參數(shù)
SVG
在Python2.6的版本必須安裝lxml,因為舊的xml.etree.ElementTree版本不能用于創(chuàng)建SVG圖像
你可以創(chuàng)建完整的SVG或者SVG判斷,在構建完整的SVG圖像時,可以使用組合為路徑的工廠(建議,默認為腳本),或者為創(chuàng)建一組簡單矩形的工廠
通過命令行的用法:
qr --factory=svg-path "Some text" > test.svg
qr --factory=svg "Some text" > test.svg
qr --factory=svg-fragment "Some text" > test.svg
或者使用Python:
import qrcode
import qrcode.image.svg
if method == 'basic':
# 簡單工廠,僅設置為矩形s.
factory = qrcode.image.svg.SvgImage
elif method == 'fragment':
# 片段工廠,同樣是僅設置為矩形s
factory = qrcode.image.svg.SvgFragmentImage
else:
# 組合路徑工廠,修復進行縮放可能引起的空白區(qū)域
factory = qrcode.image.svg.SvgPathImage
img = qrcode.make('Some data here', image_factory=factory)
還有另外的兩個相關工廠都可以使用,但也僅僅是將SVG圖像的背景色填充為白色
qrcode.image.svg.SvgFillImage
qrcode.image.svg.SvgPathFillImage
Pure Python PNG
須要安裝下面兩個packages包:
pip install git+git://github.com/ojii/pymaging.git#egg=pymaging
pip install git+git://github.com/ojii/pymaging-png.git#egg=pymaging-png
通過命令行執(zhí)行:
qr --factory=pymaging "Some text" > test.png
或者在Python中執(zhí)行:
import qrcode
from qrcode.image.pure import PymagingImage
img = qrcode.make('Some data here', image_factory=PymagingImage)