Files
Banana/README.md
2026-03-03 10:37:14 +08:00

142 lines
5.4 KiB
Markdown
Raw Permalink 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.

# NanoBanana2 本地调用脚本
本项目提供一个简单的 Python/Node 脚本,帮助你通过速创 API 的 **NanoBanana2** 接口,根据提示词和本地参考图或参考图 URL 生成图片,并将结果图片保存到本地目录。
## 环境准备Python 或 Node 二选一)
1. 安装 Python 3.9+Windows 可在 `python.org` 下载并安装)。
2. 在项目目录下安装 **Python 依赖**(如果使用 Python 脚本):
```bash
pip install -r requirements.txt
```
3. 在项目目录下安装 **Node 依赖**(如果使用 Node + `npm run dev`
```bash
npm install
```
4. 在速创 API 控制台获取你的接口密钥key
5.`config_nano_banana.json` 中直接填写密钥、默认提示词,以及可选的参考图 URL推荐文件已在项目根目录创建
```json
{
"api_key": "在这里填写你的速创API密钥",
"prompt": "在这里填写默认提示词(可留空,留空则运行时输入或用命令行参数覆盖)",
"size": "1K 或 2K 或 4K可选",
"reference_urls": [
"https://你的参考图1.png",
"https://你的参考图2.jpg"
]
}
```
6. 或将密钥配置到环境变量:
```bash
setx WUYIN_API_KEY "你的密钥"
```
重新打开终端后生效。
也可以在运行 Python 脚本时通过 `--api-key` 参数传入,或用 `-p/--prompt` 临时覆盖配置文件中的提示词。
### Cloudflare R2 图床(可选,仅 Node 版本)
若希望将 `01` 目录的参考图先上传到 **Cloudflare R2**,用公网 URL 作为生图参考(并在每次生图结束后自动删除当次上传的图片),可在 `config_nano_banana.json` 中增加 R2 配置:
```json
{
"api_key": "你的速创API密钥",
"prompt": "默认提示词",
"r2_account_id": "你的 Cloudflare 账户 ID",
"r2_access_key_id": "R2 API 的 Access Key ID",
"r2_secret_access_key": "R2 API 的 Secret Access Key",
"r2_bucket": "桶名称",
"r2_public_url": "https://pub-xxxx.r2.dev"
}
```
- **r2_account_id**Cloudflare 账户 IDDashboard 右侧或 R2 概览页)。
- **r2_access_key_id / r2_secret_access_key**:在 [Cloudflare Dashboard → R2 → Manage R2 API Tokens](https://dash.cloudflare.com/?to=/:account/r2/api-tokens) 创建。
- **r2_bucket**R2 桶名称。
- **r2_public_url**:桶的公开访问地址。需在 R2 桶设置中开启 **Public access** 并绑定 R2.dev 子域或自定义域名,例如 `https://pub-xxxx.r2.dev`(不要以 `/` 结尾)。
配置完成后,运行 `npm run dev` 时会自动把 `01` 中的图片上传到 R2、用返回的 URL 作为参考图请求生图,并在生图流程结束后删除本次上传的 R2 对象。**不配置 R2 时**,脚本仍使用原有逻辑:将 `01` 中的图片转为 base64 直接提交。
## 目录说明
- `01`:参考图目录(可自行创建)。把你希望作为参考的图片放到这里(支持 `.jpg/.jpeg/.png/.webp/.bmp/.gif`)。若配置了 **Cloudflare R2 图床**,脚本会将本目录图片上传到 R2 并以其 URL 作为生图参考,生图结束后自动删除本次上传的文件。
- `save`:生成图片保存目录(脚本会自动创建)。
- `nano_banana_client.py`Python 主脚本。
- `nano_banana_client.js`Node 主脚本,配合 `npm run dev` 使用。
- `package.json`Node 项目配置(内置 `dev` 脚本)。
## 使用方式Python
在项目根目录(`nano_banana_client.py` 所在目录)打开终端,执行:
```bash
python nano_banana_client.py -p "你的提示词"
```
常用参数示例:
- 指定提示词:
```bash
python nano_banana_client.py -p "一只坐在阳台上的橘猫写实风格4k 高清"
```
- 指定尺寸与比例:
```bash
python nano_banana_client.py -p "科幻城市夜景" --size 4K --aspect-ratio 16:9
```
- 指定参考图目录与保存目录:
```bash
python nano_banana_client.py -p "保持人物外观一致,换一套商务正装" --input-dir 01 --output-dir save
```
运行后脚本会:
1.`input-dir`(默认 `01`)中读取参考图并转为 base64
2. 调用 `https://api.wuyinkeji.com/api/async/image_nanoBanana2` 创建任务;
3. 根据任务 `id` 调用结果详情接口轮询任务状态;
4. 将返回的图片 URL 下载到 `output-dir`(默认 `save`)。
> 说明Python 脚本里的结果查询接口使用的是通用「结果详情」接口地址,如官方文档有更新,请根据最新文档调整 `RESULT_DETAIL_URL` 常量的值。
## 使用方式Node + npm run dev
1. 确保已经在 `config_nano_banana.json` 中填好:
```json
{
"api_key": "你的速创API密钥",
"prompt": "默认提示词例如一只坐在阳台上的橘猫写实风格4k 高清",
"size": "1K 或 2K 或 4K可选",
"reference_urls": [
"https://你的参考图1.png",
"https://你的参考图2.jpg"
]
}
```
2. 在项目根目录执行:
```bash
npm run dev
```
3. Node 版本脚本的行为:
1.`config_nano_banana.json` 中读取 `api_key``prompt`
2. **若已配置 R2**:将 `01` 目录中的参考图上传到 R2得到公网 URL作为生图参考**未配置 R2**:将 `01` 目录图片转为 base64。再合并配置中的 `reference_urls`
3. 调用 `https://api.wuyinkeji.com/api/async/image_nanoBanana2` 创建任务。
4. 使用 `https://api.wuyinkeji.com/api/async/detail` 和返回的 `id` 轮询任务状态。
5. 将生成图片下载到 `save` 目录;若使用了 R2随后删除本次上传的 R2 参考图。