Community图像github.com

图片压缩自动化

用于批量压缩、调整大小或转换产品图片(PNG、JPG、WEBP、AVIF)为本仓库中适用于网页的 JPG、WebP 或 AVIF 文件,在新机器上设置用户的工作文件夹,或排查高度限制缩放、宽高比错误及 CLI 标志问题。

图片压缩自动化 是什么?

该技能提供了一种自动化批量处理产品图片的工作流程,专注于压缩、调整大小和格式转换,以生成适用于网页的图片文件。它使用 `sharp` 库,支持 PNG、JPG、WEBP 和 AVIF 格式,并能将透明 PNG 扁平化为白色背景,同时严格保持原始宽高比。技能通过 CLI 工具实现,支持高度限制缩放(如 `800px`)或精确尺寸(`WxH`),并可输出 JPG、WebP 或 AVIF 格式。工作流程包括检查依赖项(`npm install`)、要求用户指定工作文件夹、确认目标尺寸和格式,然后以非交互方式执行转换。它明确禁止自动假设驱动器或文件夹路径,也不允许裁剪或拉伸图片,而是在宽高比不匹配时报告建议的尺寸。该技能适用于 Claude Code 等支持 CLI 工具的 AI 代理平台,通过分步指导和清晰的红旗标记来避免常见错误,确保用户隐私和输出一致性。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/alirazawebservice-rgb/image-compress-automation/tree/HEAD/skills/image-compress-automation

Installed? Explore more 图像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

图片压缩自动化 是做什么的?

概述

使用 sharp 库批量调整大小并压缩产品图片,在几秒钟内将其转换为适用于网页的 .jpg、.webp 或 .avif 文件,同时保留原始文件名,将透明 PNG 扁平化为白色背景,并严格保持宽高比(800px 单高度自动缩放或 WxH 精确检查)。

核心原则: 绝不假设工作驱动器(如 F:\),绝不在未确认时静默回退到 800x800 或 jpg,绝不裁剪或扭曲图片。

快速参考

情况操作
首次运行(node_modules/ 缺失)运行 npm install(需要 Node.js >= 20.0.0)
.imagerc.json 缺失且未指定 --dir询问用户 其工作文件夹后再运行
目标尺寸/高度或格式缺失询问用户 尺寸(800px 高度或 WxH)和格式(jpg、webp 或 avif)后再运行
用户只给出高度(例如 800px in webp)传递 --size 800px --format webp(自动根据每张图片计算比例宽度)
用户给出工作文件夹 + WxH + 格式运行 node bin/cli.js --dir "<folder>" --size "<WxH>" --format <jpg|webp|avif>
用户有单独的原始图片和导出文件夹运行 node bin/cli.js --input "<in>" --output "<out>" --size "<px|WxH>" --format <fmt>
精确 WxH 宽高比不匹配不 裁剪/拉伸;报告输出中建议的匹配尺寸(或建议在适当时使用 800px 高度模式)
透明 PNG 背景自动扁平化为 #ffffff(可通过 --bg "#hex" 更改)

分步代理工作流程

每当用户要求您使用此仓库压缩或调整图片大小时,请按以下顺序执行:

1. 检查设置与依赖项

  1. 确认 node_modules/sharp 存在。如果是新克隆的仓库,则运行 npm install。
  2. 检查仓库根目录下是否存在 .imagerc.json(除非用户已在提示中指定了文件夹)。
    • 如果 .imagerc.json 不存在 且用户 未 指定文件夹,则 先询问用户: “您希望为您的 input 和 output 图片文件夹使用哪个文件夹?(例如,./ 表示当前项目文件夹,~/Desktop/store-images 或 D:\Images。)”
    • 绝不假设 F:\Image Compress Automation 或猜测为 ~/Desktop。

2. 检查 input/ 并确认尺寸与格式

  1. 确保 <folder>/input 和 <folder>/output 目录存在(或传递 --dir "<folder>" 让 CLI 自动创建它们)。
  2. 检查输入文件夹中有多少支持格式的图片(.png、.jpg、.jpeg、.webp、.avif)。如果为 0,则告知用户确切的 <folder>/input 路径,让他们将图片放入其中,然后停止。
  3. 如果用户 未 在当前请求中明确说明目标高度/尺寸或输出格式,则 在执行前询问 —— 即使非 TTY/无标志的回退默认值为 800x800 和 jpg。

3. 以非交互方式执行并报告结果

使用标志显式运行 CLI(避免在非 TTY 工具 shell 中使用裸 node bin/cli.js,以免依赖静默默认值):

node bin/cli.js --dir "<工作文件夹>" --size "<HEIGHTpx or WIDTHxHEIGHT>" --format "<jpg|webp|avif>"

用户请求时可使用的可选标志:

  • --format <jpg|webp|avif>(默认值 jpg;webp 比 JPG 小约 25–35%,avif 小约 30–50%)
  • --quality <1-100>(JPG mozjpeg / WebP effort: 6 默认为 85,AVIF effort: 4 默认为 65)
  • --bg "<#hex>"(透明 PNG 扁平化默认使用 #ffffff)
  • --strict(如果任何文件被跳过或失败,返回退出码 1)

如果用户希望此工作文件夹在交互式终端运行(npm start)中被记住,您可以提及或保存 .imagerc.json(已加入 gitignore)或让他们运行 npm run setup。

4. 验证并总结输出

直接从命令输出中报告:

  • 总共转换/跳过/失败的文件数量以及节省的空间(MB 和 %)。
  • 确切的输出文件夹路径(<工作文件夹>/output)。
  • 对于任何 aspect-ratio-mismatch 跳过,展示 CLI 打印的该文件的原始尺寸/比例以及建议的比例尺寸。

常见错误与红旗标记

想法 / 错误失败原因及应对方法
“我直接运行 node bin/cli.js,不带 --size 或 --format”非 TTY 回退会静默选择 800x800 和 jpg。务必先与用户确认文件夹、尺寸/高度(800px 或 WxH)和格式(jpg/webp/avif),并传递 --dir、--size 和 --format。
“用户想要 800×800,但照片是 1:2 比例——我会传递 fit: cover 或编写自定义裁剪脚本”违反核心规则:绝不静默裁剪或拉伸。让 CLI 拒绝不匹配并提供比例尺寸。
“我会提交 .imagerc.json 或测试 PNG 到 input/”.imagerc.json、input/* 和 output/*(除 .gitkeep 外)已加入 gitignore 以保护用户隐私。请保持它们不被跟踪。
“我会只传递 --input 而不传递 --output”没有 --output 或 --dir 时,输出会回退到 <cwd>/output。始终传递 --dir(标准流程)或同时传递 --input 和 --output。

相关技能