---
name: gemini-image
description: |
  使用 Gemini API 生成和编辑图片。当用户要求生成图片、编辑图片、修改图片、重绘图片、
  生成高清图片、多轮对话迭代修改图片时触发此技能。
  关键词: 生成图片、画图、图片编辑、修图、重绘、高清、2K、4K、text-to-image、image editing
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
---

# Gemini 图片生成与编辑技能

通过 Gemini API (Nano Banana 系列模型) 为用户生成、编辑、迭代修改图片。

## 工具脚本

```
SCRIPT="$HOME/.claude/skills/gemini-image/scripts/gemini_image.py"
```

所有图片操作通过此脚本完成，运行方式：

```bash
python3 "$SCRIPT" <command> [args...]
```

## 环境要求

- **API Key**: 存在环境变量 `$GEMINI_API_KEY` (用户已配置在 .zshrc)
- **代理**: 如需代理，用户应在 shell 中设置 `http_proxy` 和 `https_proxy` 环境变量
- **依赖**: `google-genai`, `Pillow` (如未安装则运行: `pip3 install google-genai Pillow`)

## 模型选择

| 模型 ID | 别名 | 特点 |
|---------|------|------|
| `gemini-3.1-flash-image-preview` | `flash` | 快速，日常生成/编辑，默认选择 |
| `gemini-3-pro-image-preview` | `pro` | 高质量，支持 2K/4K 分辨率输出 |

- 默认使用 flash 模型
- 当用户要求 2K/4K 高清时，自动切换到 pro 模型

## 命令参考

### 1. 文本生成图片

```bash
python3 "$SCRIPT" generate "描述文字" --output result.png --ratio 16:9 --model flash
```

参数:
- `prompt`: 图片描述 (必填)
- `--output`: 输出文件路径 (默认 generated.png)
- `--ratio`: 宽高比，可选 `1:1` `2:3` `3:2` `3:4` `4:3` `4:5` `5:4` `9:16` `16:9` `21:9`
- `--size`: 分辨率 `2k` 或 `4k` (指定后自动使用 pro 模型)
- `--model`: `flash`(默认) 或 `pro`

### 2. 编辑已有图片

```bash
python3 "$SCRIPT" edit "编辑指令" --input source.png --output edited.png
```

参数:
- `prompt`: 编辑指令 (必填，如 "把背景换成海边"、"去掉水印"、"重绘为高清版本")
- `--input`: 输入图片路径 (必填)
- `--output`: 输出文件路径 (默认 edited.png)
- `--ratio`, `--size`, `--model`: 同上

### 3. 多轮对话 - 创建新会话

```bash
python3 "$SCRIPT" chat_new --session .gemini_chat_session.pkl
```

### 4. 多轮对话 - 发送消息

```bash
python3 "$SCRIPT" chat_send "修改指令" --session .gemini_chat_session.pkl --output v2.png
python3 "$SCRIPT" chat_send "继续修改" --input another.png --session .gemini_chat_session.pkl --output v3.png
```

参数:
- `prompt`: 文字指令 (必填)
- `--session`: 会话文件 (默认 .gemini_chat_session.pkl，不存在则自动创建)
- `--input`: 可选，附带一张图片
- `--output`: 输出文件路径 (默认 chat_output.png)

## 工作流程

### 场景 A: 单次生成/编辑

1. 根据用户需求确定命令 (generate 或 edit)
2. 选择合适的参数 (ratio, size, model)
3. 运行脚本，等待生成
4. 用 Read 工具查看生成的图片，向用户展示
5. 如果用户不满意，根据反馈调整 prompt 重新生成

### 场景 B: 多轮迭代修改 (推荐用于需要反复调整的场景)

1. 创建会话或直接发送第一条消息 (chat_send 会自动创建会话)
2. 运行 chat_send，生成第一版图片
3. 用 Read 工具查看图片，向用户展示
4. 用户提出修改意见
5. 继续用 chat_send 发送修改指令 (模型会记住上下文，无需重新描述)
6. 重复 3-5 直到用户满意
7. 如果用户最终想要高清版本，用 edit 命令 + `--size 2k/4k` 对最终版进行高清化

### 场景 C: 高清重绘已有图片

1. 用 Read 工具先查看原图，理解内容
2. 撰写详细的重绘 prompt (描述图片中的所有元素、布局、颜色)
3. 运行 edit 命令，传入原图 + prompt + `--size 2k`
4. 查看结果，向用户展示

## 重要提示

- 每次生成图片后，**必须用 Read 工具读取并展示给用户**，这样用户才能看到效果
- 生成图片的 prompt 要尽量具体详细，描述清楚风格、颜色、布局、内容
- 多轮对话中，模型记住了之前的图片，所以后续指令可以简短 (如 "把颜色改成蓝色")
- 如果生成失败 (finish_reason 不是 STOP)，尝试简化 prompt 后重试
- 中文和英文 prompt 都支持，复杂场景建议用英文 prompt 效果更好
- 超时设置: 图片生成可能需要较长时间，Bash 命令 timeout 建议设为 120000ms
