first commit
This commit is contained in:
141
README.md
Normal file
141
README.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# 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 账户 ID(Dashboard 右侧或 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 参考图。
|
||||
Reference in New Issue
Block a user