mcpField
I
image-compress-skill

image-compress-skill

github.com/994ak创意与媒体351 次安装39 周前更新
代码仓库

关于 image-compress-skill

指导 AI Agent 根据照片、图形及网页或归档用途选择图像压缩策略的技能,介绍 WebP 和优化 PNG 流程、工具设置与结果验证。

主要功能

  1. 01按图像类型选择 WebP 或 PNG
  2. 02使用有损 WebP 压缩照片
  3. 03通过量化优化 PNG
  4. 04支持无损优化选项
  5. 05验证输出大小、格式和外观

适用场景

  1. 01缩小网页照片文件
  2. 02优化徽标、图标和截图
  3. 03为归档文件保留图像质量

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/994ak/image-compress-skill --skill image-compress-skill

安装后在 Claude Code 中输入/image-compress-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
strategy-guide.md
library-knowledge.md
scripts/
install.sh

详细介绍

ImageCompressSkill

面向 AI Agent 的智能图像优化引擎。在 PNG 量化和 WebP 压缩之间智能选择。

1. 智能策略概览

最佳压缩策略取决于输入内容类型和目标用途。

内容类型主要策略工具链目标格式
照片有损 WebPimage -> libwebp.webp
图形 / 徽标 / UI优化后的 PNGimage -> imagequant -> oxipng.png
通用(Web)WebP(高兼容性)image -> libwebp.webp
通用(归档)优化后的 PNGimage -> oxipng(无损).png

决策逻辑:

  1. 优先尝试 WebP(默认):对于大多数 Web 用途,WebP 的体积与质量比最佳(可缩小 30-90%)。
  2. 回退到 PNG:如果输入是简单图形(颜色数量较少),或者 WebP 生成的文件更大(这种情况很少见,但简单形状确实会发生),则使用量化 PNG 流程。
  3. 严格保证质量:如果用户要求“无损”或“没有视觉变化”,则跳过量化,只使用 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 实现规则

实现图像压缩工具时:

  1. 支持双模式:始终实现两种流程(WebP 和 PNG)。
  2. 智能默认值:
    • 默认质量:80(WebP 和 ImageQuant 均适用)。
    • 默认 WebP 方法:4。
    • 默认 Oxipng 级别:2(如果速度不重要,则使用 4)。
  3. 输出逻辑:
    • 如果用户要求“压缩这张图片” -> 输出 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,其中包含参考实现,可处理:

  1. CLI 参数解析
  2. 图像加载
  3. WebP 分支(使用 webp crate)
  4. PNG 分支(使用 imagequant -> png 编码 -> oxipng)

5. 验证

务必检查:

  1. 文件大小:输出文件是否小于输入文件?
  2. 格式:是否为有效的 WebP/PNG?
  3. 视觉效果:在浏览器/查看器中打开。

评论

支持 Markdown