90 lines
2.7 KiB
Markdown
90 lines
2.7 KiB
Markdown
# image-generate
|
||
|
||
这是一个基于 `gpt-image-2` 的图片生成小项目,支持 OpenAI-compatible / apicodex-compatible 接口。
|
||
|
||
## 安装
|
||
|
||
```bash
|
||
python3 -m pip install -r requirements.txt
|
||
```
|
||
|
||
## 入口
|
||
|
||
- `gpt_image2_generate.py`:单参考图 / 文生图 / 图生图入口
|
||
- `gpt_image2_generate_multi.py`:多参考图、多输出入口
|
||
- `scripts/*.sh`:常用启动脚本
|
||
|
||
## 快速开始
|
||
|
||
单参考图:
|
||
|
||
```bash
|
||
bash scripts/run_openai_gpt_image2_edit.sh
|
||
```
|
||
|
||
多参考图、多输出:
|
||
|
||
```bash
|
||
bash scripts/run_openai_gpt_image2_multi.sh
|
||
```
|
||
|
||
这两个 OpenAI 脚本会强制 `IMAGE_REQUEST_STYLE=openai`,不会沿用 `.env` 里的 `apicodex`。
|
||
|
||
## 配置
|
||
|
||
复制 `.env.example` 为 `.env`,按需填写:
|
||
|
||
- `OPENAI_API_KEY`
|
||
- `OPENAI_BASE_URL`
|
||
- `IMAGE_PROMPT`
|
||
- `IMAGE_SIZE`
|
||
- `REFERENCE_IMAGE` 或 `REFERENCE_IMAGES`
|
||
- `IMAGE_STREAM`
|
||
- `IMAGE_PARTIAL_IMAGES`
|
||
- `IMAGE_MODERATION`
|
||
|
||
`IMAGE_SIZE` 可选值:
|
||
|
||
- 比例值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3`、`5:4`、`4:5`、`2:1`、`1:2`、`21:9`、`9:21`
|
||
- 像素值:`宽x高` 格式,只要满足官方约束即可。OpenAI 官方 `gpt-image-2` 的常用尺寸示例是 `1024x1024`、`1536x1024`、`1024x1536`、`2048x2048`、`2048x1152`、`3840x2160`、`2160x3840`,以及 `auto`
|
||
|
||
官方约束:
|
||
|
||
- 最大边长 `<= 3840px`
|
||
- 宽高都必须是 `16px` 的倍数
|
||
- 长边 / 短边比值不能超过 `3:1`
|
||
- 总像素数必须在 `655,360` 到 `8,294,400` 之间
|
||
|
||
建议:
|
||
|
||
- `IMAGE_REQUEST_STYLE=openai` 时,比例值会自动映射成兼容像素尺寸。
|
||
- 需要更稳定的输出尺寸时,优先直接写像素值。
|
||
- `4096x2304`、`4096x4096` 这类超过 `3840px` 边长上限的尺寸,不属于 OpenAI 官方 `gpt-image-2` 的可选值。
|
||
|
||
## Stream 与 Moderation
|
||
|
||
- `IMAGE_STREAM=true` 时,请求里会发送 `stream=true`。
|
||
- `IMAGE_PARTIAL_IMAGES=1` 时,请求里会额外发送 `partial_images=1`,要求先返回 1 张中间图。
|
||
- `IMAGE_MODERATION` 目前只支持 `auto` 和 `low`,其他值会在本地校验阶段直接报错。
|
||
- 如果上游真的返回 `text/event-stream`,脚本会逐条处理 SSE 事件,并在运行目录里保存:
|
||
- `post-response.json`
|
||
- `stream-events.jsonl`
|
||
- `partials/*.png`
|
||
- 如果上游没有返回 `EventStream`,脚本会自动回退到原来的 JSON / 轮询处理逻辑。
|
||
|
||
常用示例:
|
||
|
||
```bash
|
||
IMAGE_STREAM=true \
|
||
IMAGE_PARTIAL_IMAGES=1 \
|
||
IMAGE_MODERATION=low \
|
||
bash scripts/run_openai_gpt_image2_edit.sh
|
||
```
|
||
|
||
详细说明见 [docs/usage.md](docs/usage.md)。
|
||
|
||
## 仓库约定
|
||
|
||
- `outputs/` 是运行产物目录,默认不纳入版本控制。
|
||
- `references/` 是本地参考图目录,默认不纳入版本控制。
|