準備環境
python生成二維碼,須要依賴包qrcode和PIL(二維碼的實質就是一個url。)
python3安裝PIL:pip install PIL
python2安裝PIL:pip install pillow
生成二維碼的方法
1.將url生成二維碼的最簡單的示例以下:
import qrcode
img=qrcode.make("www.zhuanzhuan.com")
img.save("./test.png")
2.能夠經過qrcode的一些配置項來更改生成二維碼的樣式,好比寬度、大小、容錯係數
qr=qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=8,
border=2
)
3.能夠將本地的一個圖片粘貼到二維碼圖片上(限制圖片大小)
代碼以下:
import qrcode
from PIL import Image
url="www.zhuanzhuan.com"
qr=qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=8,
border=2
)
qr.add_data(url)
qr.make(fit=True)
img=qr.make_image()
img=img.convert("RGBA")
icon=Image.open("./logo.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("./test.png")
注意:
1.加上的圖片必須是本地圖片,用網絡圖片不能夠這麼寫
2.粘貼的圖片必須和二維碼生成的格式一致,都是png
遇到的問題:
1.二維碼增長圖片這步,報錯: ValueError: bad transparency mask
緣由:說是python的PIL合併圖片時出錯,可是個人兩個圖片都是png,而後根據網上搜索到的方案轉換了一下要粘貼的本地圖片,從新轉換成png格式,解決了這個問題
2.python2+mac和python2+Ubuntu的系統,PIL裝不上,使用qrcode去生成二維碼時報錯:IOError: encoder zip not available
解決方法:
1.先將PIL卸載,而後從新安裝pillow
pip uninstall PIL
pip install pillow
有的安裝pillow的時候還會報缺東西的問題,有多是缺下面這些,直接安裝通常都解決了
apt-get install libjpeg62 libjpeg62-dev zlib1g-dev libfreetype6 libfreetype6-dev
下面附上一個帶圖片的二維碼: