使用python生成二維碼

注:PIL僅支持到python2.7,對(duì)于python3,可以參考使用Pillow - 廖雪峰的官方網(wǎng)站

pip install pillow
pip install qrcode

以下轉(zhuǎn)載自使用python生成二維碼 - 追夢小白 - 博客園 (cnblogs.com)

1.python-qrcode是個(gè)用來生成二維碼圖片的第三方模塊,依賴于 PIL 模塊和 qrcode 庫。

首先,我們要安裝三個(gè)模塊,qrcode,image,PIL。

pip install qrcode

pip install image

PIL:Python Imaging Library,已經(jīng)是Python平臺(tái)事實(shí)上的圖像處理標(biāo)準(zhǔn)庫了。PIL功能非常強(qiáng)大,但API卻非常簡單易用。

在Debian/Ubuntu Linux下直接通過apt安裝:

$ sudo apt-get install python-imaging

Mac和其他版本的Linux可以直接使用easy_install或pip安裝,安裝前需要把編譯環(huán)境裝好:

$ sudo easy_install PIL

如果安裝失敗,根據(jù)提示先把缺失的包(比如openjpeg)裝上。

Windows平臺(tái)就去PIL官方網(wǎng)站下載exe安裝包。

2.簡單用法

img = qrcode.make('simpleqrcode')
img.save('D:/simpleqrcode.jpg')
#img.show()

3.高級(jí)用法

import qrcode
qr=qrcode.QRCode(version = 2,error_correction = qrcode.constants.ERROR_CORRECT_L,box_size=10,border=10,)
qr.add_data('http://www.cnblogs.com/sfnz/')
qr.make(fit=True)
img = qr.make_image()
img.show()
#img.save('D:/test.jpg')

4.帶有l(wèi)ogo圖案的二維碼

from PIL import Image
import qrcode

qr = qrcode.QRCode(version=5,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=8,border=4)
qr.add_data("http://www.cnblogs.com/sfnz/")
qr.make(fit=True)

img = qr.make_image()
img = img.convert("RGBA")

#logo="D:/favicon.jpg"
icon = Image.open("D:/favicon.jpg")

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)
icon = icon.convert("RGBA")
img.paste(icon,(w,h),icon)
#img.show()
img.save('D:/createlogo.jpg')

參數(shù)含義:

version:值為1~40的整數(shù),控制二維碼的大?。ㄗ钚≈凳?,是個(gè)12×12的矩陣)。 如果想讓程序自動(dòng)確定,將值設(shè)置為 None 并使用 fit 參數(shù)即可。
error_correction:控制二維碼的錯(cuò)誤糾正功能??扇≈迪铝?個(gè)常量。
ERROR_CORRECT_L:大約7%或更少的錯(cuò)誤能被糾正。
ERROR_CORRECT_M(默認(rèn)):大約15%或更少的錯(cuò)誤能被糾正。
ROR_CORRECT_H:大約30%或更少的錯(cuò)誤能被糾正。
box_size:控制二維碼中每個(gè)小格子包含的像素?cái)?shù)。
border:控制邊框(二維碼與圖片邊界的距離)包含的格子數(shù)(默認(rèn)為4,是相關(guān)標(biāo)準(zhǔn)規(guī)定的最小值)。
img.save:是將生成二維碼圖片保存到哪里。

參考文檔:

http://www.xuchanggang.cn/archives/1069.html

http://www.cnblogs.com/linjiqin/p/4140455.html

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140767171357714f87a053a824ffd811d98a83b58ec13000

官網(wǎng)及參考手冊

http://pythonware.com/products/pil/

http://effbot.org/imagingbook/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容