python使用opencv压缩图片并转为webp格式

NO.1
使用场景

优化独立博客中的图片

  1. 提升博客访问速度
  2. 减少图床的账单费用

在保证清晰度和质量的同时,提升用户体验

NO.2
使用opencv

安装opencv

pip3 install opencv-python

引入opencv

import cv2

压缩并转化图片格式

imgPath = "xxx"
img = cv2.imread(imgPath)
cv2.imwrite("xxx.webp", img, [cv2.IMWRITE_WEBP_QUALITY, 70])

imgPath为图片的文件路径

NO.3
base图片压缩转码

安装依赖

pip3 install numpy

引入模块np

# 引入np
import numpy as np

定义转码函数

# base64转为opencv可用的图片
def base64_to_image(base64_code):
    # base64解码
    img_data = base64.b64decode(base64_code)
    # 转换为np数组
    img_array = np.fromstring(img_data, np.uint8)
    # 转换成opencv可用格式
    img = cv2.imdecode(img_array, cv2.COLOR_RGB2BGR)

    return img

接收base64数据

base64Data="xxx"
base64Img = base64_to_image(base64Data)
cv2.imwrite("xxx.webp", base64Img, [cv2.IMWRITE_WEBP_QUALITY, 70])

转码成功

NO.4
Tips

对于图片而已,可以设置缩放尺寸,去除无用信息元素,等一些算法压缩

webp会有一些兼容性问题,但目前好处大于缺点,比jpg和png要轻量很多

END.