使用python 生成二維碼 中間帶logo
阿新 • • 發佈:2019-01-27
推薦兩個庫:qrcode 和 python-qrcode。
qrcode 執行在 Python 3 版本上,它可以玩出很多花樣。例如能生成以下三種二維碼圖片:普通二維碼、帶圖片的藝術二維碼(黑白與彩色)、動態二維碼(黑白與彩色)。它比較適合直接用於生成二維碼圖片的場景。
安裝 qrcode 庫可以使用 pip 方式。但是該庫依賴 pillow、numpy 和imageio。因此,我們需要先安裝依賴庫,再安裝 qrcode。
- 首先逐一安裝需要的庫
# 逐一安裝
pip install pillow
pip install numpy
pip install imageio
pip install myqr
python-qrcode
python-qrcode 相比 qrcode 要稍微遜色一點。不過它也有自己的特色。它支援生成向量圖,而且比較適合在程式碼中生成二維碼的場景。安裝 python-qrcode 同樣建議使用 pip 方式,安裝命令如下:
pip install qrcode
安裝完這些依賴的庫以後就可以開工啦。下面是完整的程式碼:
#!/user/bin/Python3
import qrcode
from PIL import Image
import matplotlib.pyplot as plt
'''
【紅色】:red 【橙色】:orange 【黃色】:yellow 【綠】:green 【 藍】:blue【紫】:purple
【灰色】:gray 【白色】:white 【粉紅色】:pink 【黑色】:black【墨綠色】:dark green 【橙紅色】:orange-red
'''
def getQRcode(strs, name):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=2,
)
# 新增資料
qr.add_data(strs)
# 填充資料
qr.make(fit=True)
# 生成圖片
img = qr.make_image(fill_color="blue", back_color="white" )
img = img.convert("CMYK") # RGBA
# 新增logo
icon = Image.open("1233.png")
# 獲取圖片的寬高
img_w, img_h = img.size
factor = 6
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
# 重新設定logo的尺寸
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)
# 顯示圖片
plt.imshow(img)
plt.show()
img.save(name)
return img
if __name__ == '__main__':
getQRcode("https://music.163.com/song?id=36990266&userid=112961323", '01.png')
print('execute.....')