SKILL.md
readonly只读
name
screenshot-compression
description
使用 pngquant 和 jpegoptim 原地压缩 PNG 和 JPEG 截图,保持原始格式以获得最大兼容性。
技能:截图压缩
原地压缩截图图像(PNG/JPEG),同时保持原始格式。使用 pngquant 处理 PNG,jpegoptim 处理 JPEG——两者对截图内容(UI 元素、文本、纯色区域)都非常有效。
前提条件:系统必须安装
pngquant和jpegoptim。脚本不会自动安装它们——它会检查是否存在,如果缺失则打印安装说明。
使用场景
用户有体积过大的截图文件,希望在不改变格式的情况下减小文件大小。常见场景:
- 为 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 <文件或目录>
脚本将:
- 检查
pngquant和jpegoptim是否已安装——如果未安装,打印安装说明并退出 - 根据扩展名自动检测文件格式
- 原地压缩每个文件(覆盖原文件)
- 打印每个文件和总压缩摘要
依赖检查
脚本需要两个系统工具。如果缺少任何一个,它会退出并显示安装说明,而不是继续执行。不要替用户安装它们——只需传递错误信息,让用户自行安装。
安装命令:
# 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文件。其他格式会被静默跳过。 - 脚本从不安装依赖。如果缺少工具,它会打印安装说明并退出。






