{% github it-boyer width = 30% %}

pngquant

使用pngquant批量压缩png

  1. 编写批量处理脚本 vi compresspng.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

import os
import sys
## 参考https://www.jianshu.com/p/bfa29141437e
# 执行文件路径:
    # os.path.realpath(__file__)
    # sys.argv[0]
# 当前图片目录:os.getcwd()
# 文件目录:sys.path[0]

# 获取终端参数
#   sys.argv[1]
# 用法
# pngTo imgDir 默认目录路径

def GetFileFromThisRootDir(dir, ext = None):
    allfiles = []
    needExtFilter = (ext != None)
    for root,dirs,files in os.walk(dir):
        for filespath in files:
            filepath = os.path.join(root, filespath)
            extension = os.path.splitext(filepath)[1][1:]
            if needExtFilter and extension == ext in ext:
                allfiles.append(filepath)
    return allfiles

if __name__ == '__main__':
    rootDir=sys.path[0]
    PngquantExe = rootDir + "/pngquant"
    print(len(sys.argv))
    if len(sys.argv) == 1:  #当没有传目录参数时,默认获取当前目录
        srcDir = os.getcwd()
    else:
        srcDir=sys.argv[1]  #获取用户指定的目录路径
    print(srcDir)
    imgFiles=GetFileFromThisRootDir(srcDir, 'png')
    suffix="_temp.png"
    for f in imgFiles:
        cmd = "\"" + PngquantExe + "\"" + " --ext " + suffix + " --force --speed=3 "+ f
        os.system(cmd)
        os.remove(f)
        newfile=f.replace(".png", suffix)
        os.rename(newfile, f)
print("压缩完成")

用法

  1. pngTo默认压缩当前目录的图片
  2. pngTo imgDir imgDir用户指定的目录名

参考使用pngquant批量压缩png

tinypng

https://tinypng.com/developers python 脚本批量处理