Python 图片压缩
我做了一个处理Markdown图片的小工具markdown-img,在之前给这个工具添加了主流图床支持后功能基本完备了。昨天写了一篇影评的博客扎导版正义联盟观影吐槽,图片都是从电影中截取的,每张都是1Mb以上,颇占云存储空间,所以决定加上图片压缩功能。
bing了一番以后,决定使用Pillow库实现压缩功能,虽然使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(一):为什么不用 pillow库这篇文章说了为什么Pillow库用于压缩的缺陷,但该作者给出的另一个压缩方案是windows软件,只能通过命令行调取,并不能直接通过pip库集成,综合考虑下来还是使用Pillow库,至少作为一个可选项是不错的,后期可以加入其它的压缩服务支持,比如在线无损压缩服务tinypng。
先通过pip安装包:
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow
因为暂时只有这一个压缩服务,就简单地用单个文件进行组织:
from PIL import Image
from ..config import Config
import os
from ..tools.debug import Debug
class Compress:
def __init__(self, imageFile: str, compressLimit: int = 500) -> None:
"""初始化压缩上下文管理器
imageFile: 用于压缩的原图片路径
compressLimit: 压缩门槛(高于该值的图片才会被压缩,单位kb)
"""
self.__imageFile = imageFile
self.__compressLimit: int = compressLimit
def __enter__(self):
# 对png图片使用quantize压缩
basename = os.path.basename(self.__imageFile)