Ag2S 发表于 2020-2-16 09:58

【Python】使用python 配合pngquant批量压缩图片

本帖最后由 Ag2S 于 2020-2-16 10:07 编辑

PS:pngquant:https://pngquant.org/pngquant-windows.zip
#!/usr/bin/python3
# coding=utf-8
import os, sys
import re
#调用pngquant压缩png
def tinypng(img):
    path='C:/libs/ffmpeg/pngquant/pngquant.exe'
   
    #path='pngquant.exe' #如果配置了环境变量
    cmd=path+' --force --skip-if-larger --verbose 256   \"'+img+'\"'
    res=os.popen(cmd);
    output_str = res.read()
    print(output_str)

def tinAllPNG(rootdir):
    _files = []
    list = os.listdir(rootdir) #列出文件夹下所有的目录与文件
    for i in range(0,len(list)):
         path = os.path.join(rootdir,list)
         
         if os.path.isdir(path):
            _files.extend(tinAllPNG(path))
         if os.path.isfile(path):
            if(path.endswith('.png')and path.endswith('-fs8.png')==False):
                  tinypng(path)
                  print(path)
            _files.append(path)
    #print(_files)
    return _files
   
def ReplaceAll(rootdir):
    _files = []
    list = os.listdir(rootdir) #列出文件夹下所有的目录与文件
    for i in range(0,len(list)):
         path = os.path.join(rootdir,list)
         
         if os.path.isdir(path):
            _files.extend(ReplaceAll(path))
         if os.path.isfile(path):
            if(path.endswith('-fs8.png')):
                  npath=path.replace('-fs8','')
                  os.remove(npath)
                  os.rename(path,npath)
                  print(path)
            _files.append(path)
    #print(_files)
    return _files

tinAllPNG('./')
ReplaceAll('./')

duchengen 发表于 2021-7-5 11:43

您好,最好可以给出测试结果值,比如1M的png压缩结果是多少,我现在挺需要一个好的批量压缩解决方案的。我收藏了一些压缩图片的网站,他们的压缩比例很恐怖,而且丝毫没有损失,真是太夸张了,不明白为什么ps没有具备这种功能。下面是其中的一个网站,可以研究下~https://www.picdiet.com/zh-cn
页: [1]
查看完整版本: 【Python】使用python 配合pngquant批量压缩图片