screenshot-compression

screenshot-compression

使用 pngquant 和 jpegoptim 原地压缩 PNG 和 JPEG 截图,保持原始格式以获得最大兼容性。

0Star
0Fork
更新于 2026/7/22
SKILL.md
readonly只读
name
screenshot-compression
description

使用 pngquant 和 jpegoptim 原地压缩 PNG 和 JPEG 截图,保持原始格式以获得最大兼容性。

技能:截图压缩

原地压缩截图图像(PNG/JPEG),同时保持原始格式。使用 pngquant 处理 PNG,jpegoptim 处理 JPEG——两者对截图内容(UI 元素、文本、纯色区域)都非常有效。

前提条件:系统必须安装 pngquantjpegoptim。脚本不会自动安装它们——它会检查是否存在,如果缺失则打印安装说明。


使用场景

用户有体积过大的截图文件,希望在不改变格式的情况下减小文件大小。常见场景:

  • 为 GitHub README、博客文章或文档准备图片
  • 在提交到仓库前减小图片尺寸
  • 批量压缩目录中的截图

为何保持原始格式(而非 WebP)

WebP 压缩效果更好,但在某些上下文中兼容性较差:

上下文 WebP 支持
浏览器(Chrome/Firefox/Safari/Edge)
GitHub Issues/PRs
微信编辑器
Word / PowerPoint
某些论坛/博客后台 视情况而定

保持 PNG/JPEG 格式可确保压缩后的图像在任何地方都能使用。


默认工作流程

python /path/to/skills/screenshot-compression/scripts/compress_screenshots.py <文件或目录>

脚本将:

  1. 检查 pngquantjpegoptim 是否已安装——如果未安装,打印安装说明并退出
  2. 根据扩展名自动检测文件格式
  3. 原地压缩每个文件(覆盖原文件)
  4. 打印每个文件和总压缩摘要

依赖检查

脚本需要两个系统工具。如果缺少任何一个,它会退出并显示安装说明,而不是继续执行。不要替用户安装它们——只需传递错误信息,让用户自行安装。

安装命令:

# macOS
brew install pngquant jpegoptim

# Ubuntu / Debian
sudo apt install pngquant jpegoptim

# CentOS / RHEL
sudo yum install pngquant jpegoptim

脚本选项

标志 默认值 描述
paths(位置参数) 必需 要压缩的图像文件或目录
-r, --recursive 关闭 递归处理目录
--png-quality 80-95 pngquant 质量范围(最小值-最大值,0-100)
--jpeg-quality 85 jpegoptim 最大质量(0-100)

示例

# 压缩单个文件
python .../compress_screenshots.py screenshot.png

# 压缩目录中的所有图像
python .../compress_screenshots.py ./images/

# 递归扫描目录
python .../compress_screenshots.py ./docs/ --recursive

# 代码截图的高质量
python .../compress_screenshots.py *.png --png-quality 90-100

# 缩略图的激进压缩
python .../compress_screenshots.py *.jpg --jpeg-quality 70

质量调整指南

场景 --png-quality --jpeg-quality
通用截图(文档、网页) 80-95 85
代码截图(需要清晰文本) 90-100 90
缩略图/预览(大小优先) 60-80 70

工作原理

PNG(pngquant)

  • 将 24 位真彩色(1600 万色)量化为 8 位调色板(256 色)
  • 使用 Floyd-Steinberg 抖动实现平滑渐变
  • 截图是理想选择——UI 颜色通常远少于 256 种独特值
  • 典型压缩率:60-80%

JPEG(jpegoptim)

  • 以指定质量级别重新编码
  • 通过 --strip-all 去除元数据(EXIF、ICC 配置文件、缩略图)
  • 优化 Huffman 表
  • 典型压缩率:20-50%

重要说明

  • 文件被原地压缩——原文件会被覆盖。如有需要,请先备份文件。
  • 仅处理 .png.jpg.jpeg 文件。其他格式会被静默跳过。
  • 脚本从不安装依赖。如果缺少工具,它会打印安装说明并退出。