智能图片尺寸与格式转换器
Overview
把用户手里的现有图片,按「指定尺寸 / 指定格式 / 指定用途(证件·社媒)」输出为标准图。核心价值:用户在画图工具里常只有寥寥几个剪切选项、且不清楚证件/平台到底要什么尺寸;本 Skill 把"用途"直接映射到"标准尺寸",说用途即出图,并支持精确像素与格式控制。
When to Use(触发场景)
- 用户说"把这张图改成 XX 尺寸 / XX 格式""图太大帮我压缩 / 转 png / jpg / webp"
- "生成一寸 / 二寸 / 身份证 / 驾驶证尺寸照片""简历照片尺寸"
- "给我一个 XX×XX 像素的图""微信 / 公众号 / 小红书封面尺寸"
- 需要批量把多张图统一成同一尺寸与格式时
核心能力
- 尺寸缩放:等比缩放到目标宽高(像素,或 mm/cm + DPI 换算)
- 格式转换:png / jpg / jpeg / webp / bmp / tiff
- 质量压缩:jpg / webp 支持质量参数(默认 85),控制文件体积
- DPI 设置:打印用途可指定 DPI(默认 300)
- 裁剪策略:目标比例与源图不一致时,默认居中裁剪到目标比例(crop-to-fit);如需保留全图则选留白(padding,背景色默认白、可指定任意颜色名或十六进制如
#ffffff/red) - 命名预设:内置证件照 / 社媒尺寸表(见
references/cert_sizes.md),说用途即出标准图 - 批量处理:一次传入目录,统一处理其中所有图片
- 指定体积压缩:
--target-size(KB)对 jpg / webp 做二分质量压缩,逼近目标文件体积(仅损耗格式有效,非损耗格式自动转 jpg 并提示) - 任意角度旋转:
--rotate支持 90 / 180 / 270 或任意度数,自动 expand 不裁切内容
执行原则(最小必要 · 防过度执行)
本 Skill 功能较多,但每次只执行用户明确要求的能力,绝不因为支持多就自行堆叠参数。这是防止过度执行的核心约束:
- 单一需求单一处理:用户只提"尺寸"就只改尺寸;只提"格式"就只转格式(尺寸不变);只提"旋转"就只旋转。不要把旋转、压缩、改背景色等未要求的功能一并套上。
- 格式保持克制:
--format仅在以下情况才改变格式——(a) 用户显式指定;或 (b) 用了--preset(预设自带推荐格式,如证件照默认 jpg)。用户显式给--width/--height而未指定格式时,保持原图格式,不偷偷转 png/jpg。 - 高级功能默认关闭:
--rotate默认 0(不旋转)、--target-size默认 0(不限体积)、--strategy默认crop(居中裁剪)。这些都是"用户不提就不用"的开关。 - 意图模糊时取最保守方案或先确认:当同一句话有多种解读(如"把图弄小点"可能指改尺寸也可能指压缩体积),优先选破坏性最小的解读;若仍不确定,先向用户确认一项关键参数,再执行,不擅自套用高级功能。
- 引导用户使用:当用户不知道怎么用时,直接给 1–2 条最贴合其需求的
run.py示例参数,或引导其查看USAGE.md,不要替用户做一堆未授权的决定。 - 裁剪默认会裁内容:
--strategy crop会裁掉多余部分(证件照场景合理);若用户意图是"保留全图不变形",需明确--strategy pad,不要默认假设用户接受裁切。
使用流程
- 确认输入:源图片路径(支持单文件或整个目录);目标规格二选一——(a) 显式
--width/--height+--format,或 (b) 命名--preset(一寸 / 二寸 / 身份证 / 驾驶证 / 微信头像 / 公众号封面 / 小红书 …) - 确认裁剪策略:目标比例与源图不一致时,默认居中裁剪;如需保留全图则
--strategy pad(可--bg指定背景色,默认白) - 执行:运行
scripts/run.py(见下) - 输出:保存到
--output目录(默认同目录),文件名带规格标记,如原名_一寸.jpg、原名_800x600.png
scripts/run.py 用法
# 按命名预设(说用途即出)
python scripts/run.py --input photo.jpg --preset 一寸 --output ./out
# 按显式尺寸 + 格式 + 质量
python scripts/run.py --input photo.png --width 800 --height 600 --format jpg --quality 85 --output ./out
# 留白而非裁剪(保留全图)
python scripts/run.py --input photo.jpg --preset 身份证 --strategy pad --bg white --output ./out
# 批量处理整个目录
python scripts/run.py --input ./photos/ --preset 二寸 --output ./out
# 指定体积压缩到 100KB(jpg/webp 二分质量逼近)
python scripts/run.py --input photo.png --preset 一寸 --target-size 100 --output ./out
# 任意角度旋转(如 90 度)后再按要求裁剪
python scripts/run.py --input photo.jpg --preset 身份证 --rotate 90 --output ./out
# 留白 + 指定背景色(红色)
python scripts/run.py --input photo.jpg --preset 身份证 --strategy pad --bg red --output ./out
参数说明:
--input:图片文件或目录(必填)--preset:预设名(一寸 / 二寸 / 小一寸 / 小二寸 / 大一寸 / 大二寸 / 身份证 / 驾驶证 / 护照 / 微信头像 / 公众号封面 / 小红书)--width/--height:显式目标像素(与--preset二选一)--dpi:打印分辨率,默认 300(预设已带推荐 DPI)--format:输出格式;未指定时,preset 路径取预设推荐格式(如证件照默认 jpg),显式尺寸路径保持原图格式,绝不擅自转格式--quality:jpg/webp 质量 1–100,默认 85--strategy:crop(默认,居中裁剪)或pad(留白)--bg:留白背景色,默认white;支持颜色名(red/green/...)或十六进制#rrggbb--rotate:旋转角度(度),如 90 / 180 / 270,默认 0 不旋转,自动 expand 不裁切--target-size:目标文件体积(KB),对 jpg/webp 二分质量压缩逼近;非损耗格式自动转 jpg--output:输出目录或文件;省略则输出到源文件同目录
> 本脚本为安全版:不含 import re、不含三引号 docstring、使用 # 行注释,规避 SkillHub 发布 566 内部错误。
依赖
- Pillow:
pip install pillow(用户环境需安装;跨平台支持) - 安装 / 运行示例(多客户端并列):
- WorkBuddy:
~/.workbuddy/skills/智能图片尺寸与格式转换器/ - Claude:
~/.claude/skills/智能图片尺寸与格式转换器/ - Cursor:
~/.cursor/skills/智能图片尺寸与格式转换器/
红线与边界
- 不做 AI 文生图、不生成人脸;只处理用户提供的现有图片
- 不碰图表提取(见
docx图表无损提取与迁移)、不碰 HTML 转换(见PPT等转可编辑HTML生成器) - 官方证件尺寸以最新公安 / 出入境规定为准;用于严格合规场景(如签证、考试报名)请核对最新标准,本 Skill 仅供便捷出图参考
- 跨平台红线:
scripts/内一律使用相对路径与标准库,禁硬编码~/.workbuddy等平台独占绝对路径
Resources
scripts/run.py:尺寸 / 格式 / 裁剪处理主程序(Pillow,安全版)icon.png:Skill 图标references/cert_sizes.md:证件照 / 社媒封面尺寸规格表(详细尺寸与备注,按需加载)
反模式(不要这样做)
- 不要用本 Skill "生成"或"凭空画"一张证件照——它只处理用户已提供的图;人脸/换底是 AI 文生图范畴,超出边界。
- 不要把 png/bmp/tiff 配合
--target-size期望精确压到某体积——损耗压缩仅 jpg/webp 有效,脚本会自动转 jpg 并提示,勿误解为 bug。 - 不要为严格合规场景(签证、考试报名)盲信内置尺寸——以最新官方规定为准;脚本尺寸仅作便捷出图参考。
- 不要在
scripts/内硬编码~/.workbuddy等平台独占绝对路径——跨平台红线。 - 不要在本脚本加入
import re或三引号 docstring——会触发 SkillHub 发布 566 内部错误。