python是所有編程語言中模塊最豐富的
生活中常見的二維碼功能在使用python第三方庫來生成十分容易
一.只需要安裝引用qrcode包即可
當然,我們需要先安裝幾個依賴包:
sudo pip install pillow
sudo pip install numpy
sudo pip install imageio
sudo pip install myqr
sudo pip install qrcode
二.什麼是二維碼:
問:什麼是QRcode呢?
答:二維碼(2-dimensional bar code),是用某種特定的幾何圖形按一定規律在平面(二維方向上)分佈的黑白相間的圖形記錄數據符號信息的。它能將數字、英文字母、漢字、日文字母、特殊符號(如空格,%,/ 等)、二進制等信息記錄到一個正方形的圖片中。
因此,在轉換的過程中,離不開編碼壓縮方式。在許多種類的二維條碼中,常用的碼制有:Data Matrix,Maxi Code,Aztec,QR Code,Vericode,PDF417,Ultracode,Code 49,Code 16K等。
二維碼在現實生活中的應用越來與普遍,歸功於 QR code 碼制的流行。我們常說的二維碼就是它,所以,二維碼又被稱爲 QR code。
QR code 是一種矩陣式二維條碼(又稱棋盤式二維條碼)。它是在一個矩形空間通過黑、白像素在矩陣中的不同分佈進行編碼。在矩陣相應元素位置上,用點(方點、圓點或其他形狀)的出現表示二進制“1”,點的不出現表示二進制的“0”,點的排列組合確定了矩陣式二維條碼所代表的意義。
我們的目的是要使用 Python 生成 QR 碼,那我們需要先了解二維碼(QR 碼)的結構。根據標準(ISO/IEC 18004),我們可以瞭解到 QR 碼結構如下:
二維碼的繪製大概過程如下:
在二維碼的左上角、左下角、右上角繪製位置探測圖形,位置探測圖形一定是一個 7x7 的矩陣;
(1)繪製校正圖形,校正圖形一定是一個 5x5 的矩陣;
(2)繪製兩條連接三個位置探測圖形的定位圖形;
(3)在上述圖片的基礎上,繼續繪製格式信息;
(4)接着繪製版本信息;
(5)填充數據碼和糾錯碼到二維碼圖中;
(6)最後繪製蒙版圖案。因爲按照上述方式填充內容,可能會出現大面積空白或黑塊的情況,導致掃描識別十分困難。所以需要對整個圖像與蒙版進行蒙版操作(Masking),蒙版操作即爲異或 XOR 操作。在這一步,我們可以將數據排列成各種圖片。
三.簡單運用:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import qrcode
img = qrcode.make("good good study, day day up!")
img.save("samll.png")
四.簡單介紹的運用:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import qrcode
def qrcode2():
qr = qrcode.QRCode(
version = 1,
error_correction = qrcode.constants.ERROR_CORRECT_L,
#error_correction指的是糾錯容量,這就是爲什麼二維碼上面放一個小圖標也能掃出來,糾錯容量有四個級別,分別是
#L級別,7%或更少的錯誤能修正 M級別,15%或更少的錯誤能修正,也是qrcode的默認級別
#Q級別,25%或更少的錯誤能修正 H級別,30%或更少的錯誤能修正
box_size = 10,#box_size 指的是生成圖片的像素
border = 4,#border 表示二維碼的邊框寬度,4是最小值
)
qr.add_data('掃一掃需要展示的信息')
qr.make(fit = True)
img = qr.make_image()
img.save('second.png')
if __name__ == "__main__":
qrcode2()
五.帶圖片的運用:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import qrcode
from PIL import Image
def qrcode2():
qr = qrcode.QRCode(
version = 2,
error_correction = qrcode.constants.ERROR_CORRECT_H,
box_size = 10,#box_size 指的是生成圖片的像素
border = 1,#border 表示二維碼的邊框寬度,4是最小值
)
qr.add_data("www.baidu.com")
qr.make(fit = True)
img = qr.make_image()
img = img.convert("RGBA")
img_w,img_h = img.size
factor = 3
size_w = int(img_w / factor)
size_h = int(img_h / factor)
icon = Image.open("snake.png")
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("three.png")
if __name__ == "__main__":
qrcode2()