关于 image-compress-skill
指导 AI Agent 根据照片、图形及网页或归档用途选择图像压缩策略的技能,介绍 WebP 和优化 PNG 流程、工具设置与结果验证。
主要功能
- 01按图像类型选择 WebP 或 PNG
- 02使用有损 WebP 压缩照片
- 03通过量化优化 PNG
- 04支持无损优化选项
- 05验证输出大小、格式和外观
适用场景
- 01缩小网页照片文件
- 02优化徽标、图标和截图
- 03为归档文件保留图像质量
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 994ak/ image-compress-skill --skill image-compress-skill安装后在 Claude Code 中输入/image-compress-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/strategy-guide.mdlibrary-knowledge.mdscripts/install.sh详细介绍
ImageCompressSkill
面向 AI Agent 的智能图像优化引擎。在 PNG 量化和 WebP 压缩之间智能选择。
1. 智能策略概览
最佳压缩策略取决于输入内容类型和目标用途。
| 内容类型 | 主要策略 | 工具链 | 目标格式 |
|---|---|---|---|
| 照片 | 有损 WebP | image -> libwebp | .webp |
| 图形 / 徽标 / UI | 优化后的 PNG | image -> imagequant -> oxipng | .png |
| 通用(Web) | WebP(高兼容性) | image -> libwebp | .webp |
| 通用(归档) | 优化后的 PNG | image -> oxipng(无损) | .png |
决策逻辑:
- 优先尝试 WebP(默认):对于大多数 Web 用途,WebP 的体积与质量比最佳(可缩小 30-90%)。
- 回退到 PNG:如果输入是简单图形(颜色数量较少),或者 WebP 生成的文件更大(这种情况很少见,但简单形状确实会发生),则使用量化 PNG 流程。
- 严格保证质量:如果用户要求“无损”或“没有视觉变化”,则跳过量化,只使用
oxipng(PNG)或无损 WebP。
设置
此技能需要 image-compress-tool 二进制文件。
如果未找到该工具,Agent 应运行:
./scripts/install.sh
用法
1. 智能压缩(自动)
最适合:照片、复杂渐变、Web 资源。
- 质量(
-q):- 80-85:适合 Web 的最佳区间(视觉上难以区分)。默认值。
- 75:压缩力度较大,锐利边缘可能会出现轻微瑕疵。
- 90+:归档质量,但收益递减。
- 方法(
-m):- 4:默认值。平衡性好。
- 6:速度最慢,但压缩效果最好。适用于静态资源(构建时)。
- 用法:
// Rust(使用 webp crate) let encoder = webp::Encoder::from_image(&img)?; let memory = encoder.encode(80.0); // Q=80
B. 优化后的 PNG(通过 imagequant + oxipng)
最适合:徽标、图标、屏幕截图、线稿、透明资源。
- 步骤 1:量化(
imagequant)- 质量:
min=0, max=80(高保真度时使用80-90)。 - 速度:
4(默认值)。1(最慢 / 最佳)。 - 注意:此步骤会将 32 位 RGBA 转换为 8 位索引色。这是“有损”的,但对于图形而言视觉效果出色。
- 质量:
- 步骤 2:优化(
oxipng)- 级别(
-o):- 2:默认值。平衡性好。
- 4:推荐用于生产构建(速度较慢,但值得)。
- 6:最高级别。速度很慢。
- 剥离(
--strip safe):移除元数据。 - 隔行(
-i 0):禁用隔行扫描(可节省约 20%)。
- 级别(
- 用法:
// 流程 let (palette, pixels) = imagequant_attributes.quantize(img)?; // 步骤 1 let png_data = encode_png(palette, pixels); let optimized = oxipng::optimize_from_memory(&png_data, &options)?; // 步骤 2
3. Agent 实现规则
实现图像压缩工具时:
- 支持双模式:始终实现两种流程(WebP 和 PNG)。
- 智能默认值:
- 默认质量:80(WebP 和 ImageQuant 均适用)。
- 默认 WebP 方法:4。
- 默认 Oxipng 级别:2(如果速度不重要,则使用 4)。
- 输出逻辑:
- 如果用户要求“压缩这张图片” -> 输出 WebP(体积最小)。
- 如果用户要求“优化这个 PNG” -> 输出 量化后的 PNG。
- 如果输入是小于 10KB 的简单形状 -> 检查 WebP 是否比 PNG 大;如果是,则优先使用 PNG。
4. 代码资源
依赖项设置
[dependencies]
image = "0.25"
imagequant = "4.4"
oxipng = "10.1"
webp = "0.3"
anyhow = "1.0"
clap = { version = "4.5", features = ["derive"] }
Rust 实现片段(“黄金路径”)
请参阅当前项目中的 image-compress-tool/src/main.rs,其中包含参考实现,可处理:
- CLI 参数解析
- 图像加载
- WebP 分支(使用
webpcrate) - PNG 分支(使用
imagequant->png编码 ->oxipng)
5. 验证
务必检查:
- 文件大小:输出文件是否小于输入文件?
- 格式:是否为有效的 WebP/PNG?
- 视觉效果:在浏览器/查看器中打开。
评论
支持 Markdown