python應用學習(一)——生成二維碼
- 前言
- 一、準備
- 二、代碼撰寫
- 1.引入庫
- 2.配置初始化引數
- 3.得到二維碼物件
- 4.在二維碼中放置logo
- 5.配置相應資訊并呼叫函式
- 最后
前言
本文利用python生成一個自己想要的二維碼,其中代碼做了注釋并于相關知識的解答
完成目標:
??生成如圖所示帶有logo的二維碼

一、準備
1、python環境
2、涉及到的python庫需要 pip install 包名 安裝
pip install qrcode
pip install pillow
二、代碼撰寫
1.引入庫
import qrcode
from PIL import Image
import os
import sys
2.配置初始化引數
qr = qrcode.QRCode(
version=2, #25*25 二維碼的版本號,每一個版本號對應一個尺寸,這里尺寸不是圖片的大小而的是二維碼長寬被分成的份數
error_correction=qrcode.constants.ERROR_CORRECT_H, #糾錯容量,指二維碼不完整時可以正常識別出原資訊的概率(ERROR_CORRECT_H的糾錯率最高)
box_size=8, #生成圖片的像素
border=1, #二維碼邊框寬度
)
3.得到二維碼物件
qr.add_data(string) **#string為想要打開的鏈接**
qr.make(fit=True) #用make()方法生成圖片
img = qr.make_image(fill_color = 'black',back_color = 'white') #得到二維碼物件,并可以通過修改fill_color、back_color引數來調整小格子顏色和背景色
img = img.convert("RGBA") #將圖片轉換為RGBA格式
4.在二維碼中放置logo
if logo and os.path.exists(logo):
try:
icon = Image.open(logo)
img_w, img_h = img.size #img_w、img_h是二維碼的尺寸
except Exception as e:
print(e)
sys.exit(1)
factor = 4
size_w = int(img_w / factor)
size_h = int(img_h / factor)
icon_w, icon_h = icon.size #icon_W、icon_h是logo原始的尺寸
if icon_w > size_w: #size_W、size_h是二維碼尺寸的1/factor
icon_w = size_w
if icon_h > size_h:
icon_h = size_h
icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS) #antialias是平滑處理
# 保證二維碼大小不超過二維碼大小的1/factor
w = int((img_w - icon_w) / 2) #計算logo在二維碼中的相對位置
h = int((img_h - icon_h) / 2)
icon = icon.convert("RGBA")
img.paste(icon, (w, h), icon) #根據相對位置w、h將logo放到二維碼圖片上,所以說實際是logo并不是二維碼的一部分,會遮擋二維碼的一部分,不能太大,否則無法識別
5.配置相應資訊并呼叫函式
if __name__ == "__main__":
info = "https://blog.csdn.net/weixin_45386875/article/details/113766276" #二維碼的鏈接
pic_path = "qr.png" #生成的圖片保存檔案
logo_path = "logo.png" #logo的檔案名
gen_qrcode(info, pic_path,logo_path ) #呼叫函式
最后
完整代碼:https://download.csdn.net/download/weixin_45386875/15152526
其他python應用實體見:https://blog.csdn.net/weixin_45386875/article/details/113766276
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/258737.html
標籤:python
