我有使用图床的习惯,很多图片都是P站画师8k分辨率的大图,动不动近百兆一张图。图床程序自带指定宽或高暴力等比缩小分辨率的压缩不可取,OSS有图像处理的api但花钱。百度搜索“无损压缩”,结果都是收费服务,无语子,拿python写一个吧,现成的PIL库。

先上代码

import os

import PIL
from PIL import Image


def imgToProgressive(path):
    if not path.split('.')[-1:][0] in ['png', 'jpg', 'jpeg']:
        return
    if os.path.isdir(path):
        return

    img = Image.open(path)
    destination = path.split('.')[:-1][0] + '_destination.' + path.split('.')[-1:][0]
    try:
        print(path.split('\\')[-1:][0], '开始转换图片')
        img.save(destination, "JPEG", quality=80, optimize=True, progressive=True)
        print(path.split('\\')[-1:][0], '转换完毕')
    except IOError:
        PIL.ImageFile.MAXBLOCK = img.size[0] * img.size[1]
        img.save(destination, "JPEG", quality=80, optimize=True, progressive=True)
        print(path.split('\\')[-1:][0], '转换完毕')
    print('开始重命名文件')
    os.remove(path)
    os.rename(destination, path)


for d, _, fl in os.walk(os.getcwd()):
    for f in fl:
        try:
            imgToProgressive(d + '\\' + f)
        except:
            pass

效果

压缩效果

用法

  • 先备份你的图片
  • 把备份好的图片直接丢脚本同目录
  • 直接运行代码,就会执行把此目录下所有图片压缩替换

或者编译个exe

#安装 pyinstaller(打包工具) Pillow(图片处理库)
pip install pyinstaller
pip install Pillow
#进入到项目目录下
#开始打包 -F 是打包成一个单独的文件
pyinstaller -F img.py
#显示success字样就说明成功了
#在项目根目录下会生成很多文件,生成的exe文件就在dist文件夹下
最后修改:2021 年 01 月 21 日 10 : 03 AM
如果觉得我的文章对你有用,请随意赞赏