Files
codex-market-app/gen-image/SKILL.md
T
2026-07-18 11:00:23 +08:00

117 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: gen-image
description: 调用大模型中转站的 OpenAI 图片接口生图(文生图、图生图/编辑、局部重绘、透明背景)。支持 1K/2K/4K 常用尺寸规格、横竖方比例、质量、背景和可选 style 风格参数。触发词:生图、生成图片、画一张、AI 画图、文生图、图生图、生成插画/头像/海报/封面/壁纸/图标、image generation、根据这张图改。需要外部 API 生成位图图像时使用;纯 HTML/SVG/矢量设计不适用。
---
# gen-image · 生图
通过大模型中转站,直接调用 OpenAI 图片接口生成位图图像。支持**文生图**、**图生图/编辑**、**局部重绘(mask)**、**透明背景**、**1K/2K/4K 常用尺寸**和**可选 style 风格参数**。
核心是零依赖脚本 `scripts/gen_image.py`(纯 Python 标准库,无需 pip install)。
## 何时用 / 不用
- ✅ 用户要「生成一张图 / 画一张 / AI 出图 / 做个头像/海报/插画/图标」
- ✅ 用户给了一张图要「基于它改 / 换背景 / 局部重绘」→ 图生图
- ❌ 用户要 HTML 原型、幻灯片、矢量图标、CSS 效果 → 用 `huashu-design` 或直接写代码
- ❌ 用户要图表/数据可视化 → 用 `dataviz`
## 首次使用:配置凭证
生图需要中转站的 API Key。检查 skill 根目录是否有 `.env`:
```bash
ls "$(dirname SKILL.md)/.env" 2>/dev/null || echo "未配置"
```
若无,从模板创建并让用户填写(**不要把 key 写进对话或提交到 git**):
```bash
cp .env.example .env
# 然后引导用户编辑 .env,填入 IMAGE_API_BASE_URL 和 IMAGE_API_KEY
```
`.env` 需要三项:
- `IMAGE_API_BASE_URL` — 中转站基址,如 `https://your-relay.com`(脚本自动补 `/v1/images/...`)
- `IMAGE_API_KEY` — API Key
- `IMAGE_MODEL` — 默认模型,默认 `gpt-image-2`
## 标准流程
**1. 打磨提示词。** 用户给的描述往往简短,先在心里扩写成一句信息充分的英文或中文提示词——主体、风格、光线、构图、色调、画质关键词。除非用户明确要求逐字使用,否则主动增强。生图模型对细节敏感,「一只猫」远不如「a fluffy orange tabby cat sitting on a windowsill, soft morning light, shallow depth of field, cozy warm tones」。
**2. 选参数:**
- `--size`:支持直接传像素值或别名。默认 `1024x1024`;常用别名见「尺寸规格速查」。
- `--quality`:`low`/`medium`/`high`/`auto`(gpt-image 系支持;越高越慢越贵)
- `--background transparent`:要透明底的图标/贴纸时加
- `--style`:部分模型/中转支持的独立风格参数,如 `vivid`、`natural`、`anime`、`photorealistic`。若上游不支持,把风格写进 prompt。
- `--n`:一次出几张(默认 1;多给几张让用户挑时用 `--n 2` 或 `4`)
**3. 执行(文生图):**
```bash
cd "<skill 根目录>" && python3 scripts/gen_image.py \
"a fluffy orange tabby cat on a windowsill, soft morning light, cozy tones, highly detailed" \
--size 1k-square --quality high
```
图片存到 `output/img-<时间戳>-<序号>.png`,脚本会打印完整路径。
**4. 图生图 / 编辑**(用户给了输入图):
```bash
python3 scripts/gen_image.py "把背景换成雪山日落" --edit /path/to/input.png --size 1k-square
```
多图参考:多次 `--edit a.png --edit b.png`。局部重绘:加 `--mask mask.png`(PNG 中**透明区域**为要重绘的部分,其余保留)。
**5. 交付。** 打印出保存路径后,简要告诉用户生成了什么、存在哪。图无法在终端直接显示,用户会自己打开;若在支持预览的环境可提示路径。
## 尺寸规格速查
脚本会把下列别名转换为实际像素;也可以直接传 `WIDTHxHEIGHT` 或 `auto`。部分中转/模型可能只开放其中一部分规格,遇到 400 时降低到 1K 或改用上游明确支持的尺寸。
| 规格 | 方图 | 横图 | 竖图 | 宽屏/超宽 | 典型用途 |
|------|------|------|------|-----------|----------|
| 1K | `1k-square` → `1024x1024` | `1k-landscape` → `1536x1024` | `1k-portrait` → `1024x1536` | - | 头像、图标、草图、普通配图 |
| 2K | `2k-square` → `2048x2048` | `2k-landscape` → `2048x1536` | `2k-portrait` → `1536x2048` | `2k-wide` → `2048x1152` / `2k-tall` → `1152x2048` | 海报、封面、高清社媒图 |
| 4K | `4k-square` → `4096x4096` | `4k-landscape` → `4096x3072` | `4k-portrait` → `3072x4096` | `4k-wide` → `4096x2304` / `4k-uhd` → `3840x2160` / `4k-tall` → `2304x4096` / `4k-uhd-portrait` → `2160x3840` | 大屏封面、展板、高清壁纸 |
## 风格参数速查
优先把风格写进 prompt,因为所有模型都能理解自然语言风格。仅当目标中转或模型明确支持独立风格字段时,再额外传 `--style`。
| 需求 | 推荐写法 |
|------|---------|
| 写实摄影 | prompt 写 `photorealistic, cinematic lighting, natural skin texture`,可加 `--style photorealistic` |
| 插画 | prompt 写 `editorial illustration, clean shapes, rich color palette`,可加 `--style illustration` |
| 动漫 | prompt 写 `anime style, expressive linework, cel shading`,可加 `--style anime` |
| 自然风格 | prompt 写清现实光线和材质,可加 `--style natural` |
| 鲜艳风格 | prompt 写高饱和、强对比,可加 `--style vivid` |
## 常见参数速查
| 需求 | 命令片段 |
|------|---------|
| 头像/图标(方图) | `--size 1k-square` 或 `--size 1024x1024` |
| 海报/封面(横) | `--size 1k-landscape` / `2k-landscape` / `4k-wide` |
| 手机壁纸/人像(竖) | `--size 1k-portrait` / `2k-portrait` / `4k-tall` |
| 4K 壁纸 | `--size 4k-uhd` |
| 透明背景贴纸 | `--background transparent` |
| 多出几张挑选 | `--n 4` |
| 高画质 | `--quality high` |
| 独立风格字段 | `--style natural` 或 `--style vivid`(看上游支持情况) |
| 换模型 | `--model dall-e-3` |
| 基于图改 | `--edit input.png` |
| 局部重绘 | `--edit input.png --mask mask.png` |
## 排错
- **缺 IMAGE_API_BASE_URL / IMAGE_API_KEY** → `.env` 没配好,回到「配置凭证」。
- **HTTP 401/403** → key 无效或额度不足,让用户核对中转站账户。
- **HTTP 404** → base_url 写错,或该中转站不支持 `/v1/images/generations`;确认接口路径。
- **HTTP 400 model 相关** → 该中转站不认 `gpt-image-2`,换 `--model dall-e-3` 或问用户支持的模型名。
- **响应没有图片数据** → 部分中转站返回结构不同,把打印的原始响应给用户看以便排查。
不要把 API Key 输出到对话里,也不要提交 `.env`。