cli-anything-gimp 图像编辑CLI 是做什么的?
一个基于 Pillow 的状态化命令行图像编辑界面。专为 AI 代理和高级用户设计,无需图形界面即可创建和操作图像。
安装
本 CLI 作为 cli-anything-gimp 包的一部分安装:
pip install cli-anything-gimp
前置条件:
- Python 3.10+
- 建议安装 GIMP 以支持原生批量渲染,但当 GIMP 不可用或存在延迟的
draw操作时,分层合成仍可通过内置的 Pillow 路径进行渲染
使用说明
基本命令
# 显示帮助信息
cli-anything-gimp --help
# 启动交互式 REPL 模式
cli-anything-gimp
# 创建新项目
cli-anything-gimp project new -o project.json
# 以 JSON 输出运行(适用于代理消费)
cli-anything-gimp --json project info -p project.json
REPL 模式
当不携带子命令调用时,CLI 会进入交互式 REPL 会话:
cli-anything-gimp
# 交互式输入命令,支持 Tab 补全和历史记录
命令组
项目命令组
项目管理命令。
| 命令 | 描述 |
|---|---|
new | 创建新项目 |
open | 打开已有项目 |
save | 保存当前项目 |
info | 显示项目信息 |
profiles | 列出可用的画布预设 |
json | 打印原始项目 JSON |
图层命令组
图层管理命令。
| 命令 | 描述 |
|---|---|
new | 创建新的空白图层 |
add-from-file | 从图像文件添加图层 |
list | 列出所有图层 |
remove | 按索引移除图层 |
duplicate | 复制图层 |
move | 将图层移动到新位置 |
set | 设置图层属性(名称、不透明度、可见性、混合模式、x偏移、y偏移);负偏移值自然支持 |
flatten | 拼合所有可见图层 |
merge-down | 将图层与下方的图层合并 |
画布命令组
画布操作。
| 命令 | 描述 |
|---|---|
info | 显示画布信息 |
resize | 调整画布大小(不缩放内容) |
scale | 按比例缩放画布及所有内容 |
crop | 裁剪画布到指定矩形区域 |
mode | 设置画布颜色模式 |
dpi | 设置画布 DPI |
滤镜命令组
滤镜管理命令。
| 命令 | 描述 |
|---|---|
list-available | 列出所有可用的滤镜 |
info | 显示滤镜详情 |
add | 为图层添加滤镜 |
remove | 按索引移除滤镜 |
set | 设置滤镜参数 |
list | 列出图层上的滤镜 |
媒体命令组
媒体文件操作。
| 命令 | 描述 |
|---|---|
probe | 分析图像文件 |
list | 列出项目中引用的媒体文件 |
check | 检查所有引用的媒体文件是否存在 |
histogram | 显示图像的直方图分析 |
导出命令组
导出/渲染命令。
| 命令 | 描述 |
|---|---|
presets | 列出导出预设 |
preset-info | 显示预设详情 |
render | 将项目渲染为图像文件;延迟的绘制操作在渲染时应用 |
会话命令组
会话管理命令。
| 命令 | 描述 |
|---|---|
status | 显示会话状态 |
undo | 撤销上次操作 |
redo | 重做上次撤销的操作 |
history | 显示撤销历史 |
绘制命令组
绘制操作(在渲染时应用)。
| 命令 | 描述 |
|---|---|
text | 在图层上绘制文字(将其转换为文字图层) |
rect | 绘制矩形(存储为绘制操作) |
示例
创建新项目
创建一个新的 GIMP 项目文件。
cli-anything-gimp project new -o myproject.json
# 或使用 JSON 输出以便程序化使用
cli-anything-gimp --json project new -o myproject.json
交互式 REPL 会话
启动一个支持撤销/重做的交互式会话。
cli-anything-gimp
# 交互式输入命令
# 使用 'help' 查看可用命令
# 使用 'undo' 和 'redo' 进行历史导航
导出项目
将项目导出为最终输出格式。
cli-anything-gimp --project myproject.json export render output.png --overwrite
分层合成工作流程
适用于叠加密集型合成:
cli-anything-gimp --project poster.gimp-cli.json layer set 0 offset_x -48
cli-anything-gimp --project poster.gimp-cli.json layer set 0 offset_y 24
cli-anything-gimp --project poster.gimp-cli.json draw text --layer 0 --text "Launch Night" --x 96 --y 120 --size 72 --color "#f6f1e8"
cli-anything-gimp --project poster.gimp-cli.json export render output.png --overwrite
注意事项:
layer set命令现在同时在命令模式和 REPL 模式下接受负数值的offset_x和offset_y。draw text和draw rect是渲染时操作。应将导出的图像(而不仅仅是项目 JSON)作为审查对象。- 对于包含延迟绘制操作的项目,即使安装了 GIMP,Pillow 渲染路径也将是稳定的默认选项。
状态管理
CLI 维护以下会话状态:
- 撤销/重做:最多 50 级历史记录
- 项目持久化:以 JSON 格式保存/加载项目状态
- 会话跟踪:跟踪修改和变更
输出格式
所有命令支持双输出模式:
- 人类可读(默认):表格、颜色、格式化文本
- 机器可读(
--json标志):结构化 JSON,适用于代理消费
# 人类输出
cli-anything-gimp project info -p project.json
# 适用于代理的 JSON 输出
cli-anything-gimp --json project info -p project.json
针对 AI 代理
当以编程方式使用此 CLI 时:
- 始终使用
--json标志 以获取可解析的输出 - 检查返回码 - 0 表示成功,非零表示错误
- 解析 stderr 以获取失败时的错误消息
- 为所有文件操作使用绝对路径
- 在导出操作后验证输出文件是否存在
- 在偏移、绘制、混合模式或滤镜更改后审查渲染输出,而不是仅信任已保存的项目状态
更多信息
- 完整文档:请参阅包内的 README.md
- 测试覆盖:请参阅包内的 TEST.md
- 方法论:请参阅 cli-anything-plugin 中的 HARNESS.md
版本
1.0.0