一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python二維碼生成庫qrcode安裝和使用示例

Python二維碼生成庫qrcode安裝和使用示例

2020-05-17 11:12腳本之家 Python

這篇文章主要介紹了Python二維碼生成庫qrcode安裝和使用示例,本文講解了qrcode的安裝、生成二維碼、生成帶圖標的二維碼等內容,需要的朋友可以參考下

二維碼簡稱 QR Code(Quick Response Code),學名為快速響應矩陣碼,是二維條碼的一種,由日本的 Denso Wave 公司于 1994 年發明。現隨著智能手機的普及,已廣泛應用于平常生活中,例如商品信息查詢、社交好友互動、網絡地址訪問等等。

安裝 Python 的二維碼庫 -- qrcode

由于生成 qrcode 圖片需要依賴 Python 的圖像庫,所以需要先安裝 Python 圖像庫 PIL(Python Imaging Library),不然會遇到 "ImportError: No module named Image" 的錯誤:

 

復制代碼 代碼如下:

sudo easy_install pil

 

如果安裝 pil 時出現以下錯誤:

 

復制代碼 代碼如下:

_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 上發現是 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://m.ythuaji.com.cn/")
qr.make(fit=True)
img = qr.make_image()
img.save("dhqme_qrcode.png")

 

參數 version 表示生成二維碼的尺寸大小,取值范圍是 1 至 40,最小尺寸 1 會生成 21 * 21 的二維碼,version 每增加 1,生成的二維碼就會添加 4 尺寸,例如 version 是 2,則生成 25 * 25 的二維碼。

參數 error_correction 指定二維碼的容錯系數,分別有以下4個系數:

1.ERROR_CORRECT_L: 7%的字碼可被容錯
2.ERROR_CORRECT_M: 15%的字碼可被容錯
3.ERROR_CORRECT_Q: 25%的字碼可被容錯
4.ERROR_CORRECT_H: 30%的字碼可被容錯

參數 box_size 表示二維碼里每個格子的像素大小。

參數 border 表示邊框的格子厚度是多少(默認是4)。

運行上面代碼會生成敝站的一個 QR Code:

Python二維碼生成庫qrcode安裝和使用示例

生成帶有圖標的二維碼

二維碼的容錯系數(上面所指的 error_correction)越高,生成的二維碼則可允許的殘缺率越大,且二維碼的數據主要保存在圖片的四個角上,所以在二維碼中間放一個小圖標,對二維碼的識別也是不受多大影響的。

對于插入在二維碼上的圖標大小,這里指定限制圖標的大小尺寸最大是二維碼長寬的 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://m.ythuaji.com.cn/")
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")

 

Python二維碼生成庫qrcode安裝和使用示例

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品国产一区二区三区在 | 国产福利资源网在线观看 | 吉泽明步高清无码中文 | 色帝国亚洲欧美在线蜜汁tv | 亚洲国产精品自在在线观看 | 亚洲男1069gay男猛男 | 好涨好大我快受不了了视频网 | 国产综合久久久久 | 国产精品xxxav免费视频 | 色噜噜狠狠狠综合曰曰曰88av | 91国内精品线免费播放 | 91外围| 高跟丝袜人妖sissy露出调教 | 亚洲天堂一区二区在线观看 | 欧美一级裸片又黄又裸 | 丁香五香天堂 | 国产精品久久国产精品99盘 | 国自产精品手机在线视频 | 亚洲va在线va天堂va偷拍 | 完整秽淫刺激长篇小说 | 关晓彤一级做a爰片性色毛片 | 热99在线观看 | 99久久国产综合精品1尤物 | 日本三级欧美三级人妇英文 | 欧美一区二区三区免费观看视频 | 关晓彤被草 | 视频高清在线观看 | 国产综合久久久久久 | 小妇人电影免费完整观看2021 | 99精彩视频在线观看 | 加勒比一本大道香蕉在线视频 | 国产精品亚洲专区一区 | 日本人交换乱理伦片 | 全肉一女n男np高h双龙养成 | 亲爱的客栈第二季免费观看完整版 | 啪一啪在线视频 | 亚洲性色永久网址 | 忘忧草高清 | 色婷婷久久综合中文久久一本` | 成人欧美一区在线视频在线观看 | 2021国产麻豆剧传媒剧情动漫 |