You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否需要可递归优化仓库图片并忽略.gitignore目录的脚本?

代码仓库图片批量优化脚本实现

当然有不少开发者需要这类工具!在管理包含大量图片的前端、文档类仓库时,批量优化图片能显著减小仓库体积,同时遵循.gitignore规则避免处理无关文件,非常实用。

下面是一个基于Python的实现脚本,满足递归处理图片、忽略.gitignore指定目录的需求:

import os
from gitignore_parser import parse_gitignore
from PIL import Image

def optimize_image(image_path, quality=85):
    """优化单张图片,支持JPG/PNG/WebP格式"""
    try:
        with Image.open(image_path) as img:
            # JPG压缩优化
            if img.format == 'JPEG':
                img.save(image_path, 'JPEG', quality=quality, optimize=True, progressive=True)
            # PNG体积优化
            elif img.format == 'PNG':
                img.save(image_path, 'PNG', optimize=True)
            # WebP压缩(可选)
            elif img.format == 'WEBP':
                img.save(image_path, 'WEBP', quality=quality, lossless=False)
        print(f"已优化: {image_path}")
    except Exception as e:
        print(f"优化失败 {image_path}: {str(e)}")

def main():
    # 读取当前目录的.gitignore规则
    repo_root = os.getcwd()
    gitignore_path = os.path.join(repo_root, '.gitignore')
    ignore_check = parse_gitignore(gitignore_path) if os.path.exists(gitignore_path) else lambda x: False

    # 支持的图片格式
    image_extensions = ('.jpg', '.jpeg', '.png', '.webp')

    # 递归遍历仓库目录
    for root, dirs, files in os.walk(repo_root):
        # 跳过被.gitignore忽略的目录,停止遍历其子目录
        if ignore_check(root):
            dirs[:] = []
            continue

        for file in files:
            file_path = os.path.join(root, file)
            # 只处理未被忽略的图片文件
            if not ignore_check(file_path) and file.lower().endswith(image_extensions):
                optimize_image(file_path)

if __name__ == "__main__":
    main()

使用说明:

  1. 安装依赖:
    pip install gitignore-parser pillow
    
  2. 将脚本保存为image_optimizer.py,放在代码仓库根目录
  3. 直接运行脚本:
    python image_optimizer.py
    

自定义调整点:

  • 修改image_extensions添加更多图片格式(比如.gif)
  • 调整optimize_image里的quality参数控制压缩质量(1-100,数值越高质量越好)
  • 对GIF格式可单独添加优化逻辑(需额外依赖如imageio)

这个脚本会自动读取仓库根目录的.gitignore规则,递归处理所有未被忽略的图片文件,无需手动指定目录,省心高效。

内容的提问来源于stack exchange,提问作者Devonte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:12:44