Skip to content

大香蕉 AI 是面向创意工作者的高性能图像生成平台,融合 Gemini 与桌面性能,支持最高 4K 的文生图/图生图。Banana AI is a high‑performance image generator for creators, combining Gemini with native desktop performance for up to 4K text‑to‑image and image‑to‑image.

License

Notifications You must be signed in to change notification settings

ShellMonster/Nano_Banana_Pro_Web

Repository files navigation

🎨 大香蕉 AI (Banana Pro Web & Desktop)

GitHub stars License GitHub release React Tauri Go

English | 简体中文 | 日本語 | 한국어

大香蕉 AI 是一款专为创意工作者打造的高性能图片生成平台。它融合 Gemini 与 OpenAI 标准接口能力,支持高分辨率(最高 4K)的文生图与图生图,并提供桌面端与 Web 端两种形态。

Banana Pro Web 预览 1
Banana Pro Web 预览 2
Banana Pro Web 预览 3

💡 近期更新亮点

  • ✨ OpenAI 标准接口对接:提示词优化 + 生图两条链路可切换 Gemini / OpenAI 兼容接口。
  • 🤖 提示词优化增强:新增 JSON 模式 按钮,支持强制输出结构化 JSON 并自动格式化回填,提升 Prompt 质量。
  • 🧵 模板市场:下拉打开整版模板市场,支持筛选、预览、来源与技巧提示,一键复用。
  • 🚀 大规模列表性能优化:历史记录与模板市场改为虚拟列表/虚拟网格,图片加载更顺滑。
  • 🖼️ 无图模板支持:模板缺少图片时自动显示默认图,仍可复用 Prompt。

💡 推荐使用:为了获得最佳的生成体验与极高的性价比,推荐搭配 云雾API 使用。

生成分辨率 云雾API 价格 Google 官方价格 (参考)
1K (1024x1024) 0.08 元/张 ≈ 0.94 元/张
2K (2048x2048) 0.08 元/张 ≈ 0.94 元/张
4K (4096x4096) 0.14 元/张 ≈ 1.68 元/张

🌟 核心特性

  • 🚀 极致性能:采用 Tauri 2.0 架构,配合 Go 语言 编写的高并发 Sidecar 后端,资源占用极低。
  • 🖼️ 4K 超清创作:深度优化 Gemini 3.0 模型,支持多种画幅的 4K 超清图像生成。
  • 🔌 标准接口兼容:支持 Gemini(/v1beta) 与 OpenAI(/v1) 标准格式对接,Base URL 与模型可配置。
  • ⚡ 自定义协议 (asset://):在桌面端注册原生资源协议,绕过 HTTP 协议栈,本地图片加载速度提升 300%。
  • 💾 智能历史管理:内置本地数据库与持久化缓存,支持任务状态自动恢复与大批量历史记录秒开。
  • 📸 精准图生图:支持多参考图输入,提供细腻的风格与构图控制。
  • 📦 自动化交付:集成 GitHub Actions,实现 macOS (Intel/M1) 与 Windows 平台的自动化打包发布。
  • 🧩 模板市场:启动时优先拉取远程模板 JSON,失败自动回退内置模板,并支持模板来源与技巧提示。

🚀 功能特性详解

1. 智能文生图 (Text-to-Image)

  • 精准语义理解:深度集成 Google Gemini 3.0 模型,能够精准捕捉提示词中的细节、风格与氛围。
  • 提示词智能优化:内置 AI 优化引擎,可通过 Gemini / OpenAI 标准接口模型优化提示词。
  • 提示词编辑历史:支持无限次的撤销与重做,方便在不同创意想法间快速切换。
  • 批量并发生成:支持一次性设置生成多达 100 张图片,后台自动排队处理。
  • 实时进度追踪:提供清晰的进度条与状态显示,生成过程中的每一张图片都有对应的占位卡片,完成后自动刷新。

2. 强大的图生图 (Image-to-Image)

  • 多图参考支持:最多可同时添加 10 张参考图,帮助 AI 更好地理解您想要的构图或风格。
  • 灵活的添加方式
    • 点击/拖拽:直接从本地文件夹选取或拖入图片。
    • 粘贴支持:支持直接从网页或聊天工具复制图片并粘贴到软件中。
  • 智能预处理:自动对超大图片进行压缩优化,并基于 MD5 校验自动过滤重复图片。

3. 专业级参数控制

  • 多样化画幅选择:预设 1:1, 16:9, 9:16, 4:3, 2:3 等多种主流比例。
  • 画质自定义:支持从 1K 到 4K 的超清分辨率配置。
  • 智能尺寸适配:系统会自动根据模型特性,将图片尺寸对齐到最佳像素点(8的倍数),确保生成效果最优化。
  • 对接方式切换:设置中可选 Gemini(/v1beta)OpenAI(/v1),并分别配置 Base URL / API Key / 模型 ID。

4. 极致的交互与管理

  • 大图沉浸式预览:支持全屏查看图片,提供自由缩放与拖拽功能。
  • 高密度 UI 设计:针对生产力场景优化,设置面板高度自适应,信息展示更紧凑。
  • 一键快捷操作
    • 快速复制:预览界面提供“复制图片”按钮,点击即可直接粘贴到其他软件中。
    • 批量管理:支持多选图片进行批量保存或删除。
  • 状态智能持久化:软件会自动记住您的侧边栏状态、窗口位置及最后使用的模型配置。

5. 任务与历史记录

  • 全自动持久化:所有生成记录实时保存至本地数据库,重启软件也不丢失。
  • 智能搜索:支持通过关键字快速找回历史任务。
  • 稳定连接保障:自动切换 WebSocket 与 HTTP 轮询模式,确保在复杂网络环境下生成任务不中断。

6. 模板市场 (Template Market)

  • 海量资源:目前已收录 900+ 优质模板,涵盖多种风格与行业。
  • 下拉打开:顶部“拉绳”交互,向下拉出整版模板市场。
  • 多维筛选:支持搜索、渠道/物料/行业/画幅比例筛选。
  • PPT 类目:标记为 PPT 的 16:9 模板会集中展示,便于制作演示稿素材。
  • 一键复用:模板预览后可直接应用(会替换当前 Prompt 与参考图)。
  • 手动刷新:右侧刷新按钮可手动拉取最新模板。
  • 来源与技巧:模板可携带 tips 使用提示与 source 来源信息(可点击跳转外部浏览器)。
  • 参考图要求:模板可携带 requirements.note / requirements.minRefs,用于提示需要补充的参考图数量与说明。
  • 远程同步:启动时优先拉取 GitHub Raw 模板 JSON,失败自动回退内置模板并使用本地缓存。

🧩 模板贡献指南

模板数据统一维护在:

  • backend/internal/templates/assets/templates.json

顶层结构

{
  "meta": {
    "version": "2024.12.01",
    "updated_at": "2024-12-01T12:00:00Z",
    "channels": ["社群发圈", "小红书"],
    "materials": ["海报", "PPT", "封面"],
    "industries": ["教育培训", "生活服务"],
    "ratios": ["1:1", "3:4", "16:9"]
  },
  "items": []
}

基本字段(单条模板)

{
  "id": "tpl-001",
  "title": "猫表情包模板",
  "channels": ["社群发圈", "娱乐"],
  "materials": ["海报"],
  "industries": ["生活服务"],
  "ratio": "1:1",
  "preview": "https://.../thumb.jpg",
  "image": "https://.../full.jpg",
  "prompt": "可选:模板提示词...",
  "prompt_params": "可选:提示词使用说明(保留字段)",
  "tips": "可选:模板使用提示/技巧",
  "source": {
    "name": "@贡献者",
    "label": "GitHub",
    "icon": "github",
    "url": "https://example.com/templates/tpl-001"
  },
  "requirements": { "minRefs": 2, "note": "还需要一张猫照片作为参考" },
  "tags": ["", "表情", "搞笑"]
}

字段补充说明

  • requirements.note:当需要补充参考图时的提示文案,会在卡片与预览中提示。
  • requirements.minRefs:要求的最少参考图数量。
  • tips:模板使用技巧/注意事项(预览页展示)。
  • prompt_params:提示词使用说明(保留字段,不参与渲染)。
  • tags:用于检索与聚合展示。
  • materials:可加入 PPT 标签(建议 16:9 模板),以便筛选演示稿素材。
  • meta.version / meta.updated_at:用于模板版本标记与缓存比对。

source.icon 预置关键字

  • github GitHub
  • xhs 小红书
  • wechat 微信/公众号
  • shop 电商素材
  • video 短视频
  • print 线下印刷
  • gov 政务媒体
  • meme 表情包
  • finance 金融
  • food 美食
  • local 本地/生活服务

也可以直接传图片 URL,前端会当作 icon 显示。

preview / image 允许为空:前端会显示默认占位图,仍支持复用 Prompt。

prompt_params 当前不参与渲染,仅作为说明保留字段。

提交方式

  1. Fork 仓库并修改 backend/internal/templates/assets/templates.json
  2. 提交 PR
  3. 合并后客户端启动会从 GitHub Raw 拉取最新模板

请确保素材来源合法且链接稳定,避免失效。

🏗️ 技术架构

核心系统流程图

graph TD
    subgraph "前端层 (React + Zustand)"
        UI[用户交互界面]
        State[Zustand 状态管理]
        AssetProtocol[asset:// 资源加载]
    end

    subgraph "桌面容器层 (Tauri 2.0 / Rust)"
        TauriBridge[Rust 桥接层]
        IPC[IPC 通讯优化]
        FS[本地文件访问权限]
    end

    subgraph "推理后端层 (Go Sidecar)"
        GoServer[Gin API 服务]
        WorkerPool[并发任务池]
        GeminiSDK[Google GenAI SDK]
        SQLite[(SQLite 任务存储)]
    end

    UI <--> State
    State <--> IPC
    IPC <--> TauriBridge
    TauriBridge <--> GoServer
    GoServer <--> WorkerPool
    WorkerPool <--> GeminiSDK
    WorkerPool <--> SQLite
    GeminiSDK <--> |Imagen 3.0| Cloud[Google AI Cloud]
    GoServer -.-> |保存图像| FS
    FS -.-> |映射资源| AssetProtocol
    AssetProtocol -.-> |极速显示| UI
Loading

项目采用“三层架构”设计,确保了性能与扩展性的平衡:

  1. 前端 (React + Zustand):负责响应式 UI 与状态管理,提供流畅的用户交互。
  2. 桌面容器 (Tauri):作为 Rust 桥梁,处理窗口控制、本地资源访问及 Sidecar 进程管理。
  3. 推理引擎 (Go Sidecar):负责与 Google GenAI SDK 通讯,处理 Worker 任务池与本地图片存储。

核心优化点

  • IPC 负荷优化:前端与后端之间仅传递文件路径,大型二进制数据通过 asset:// 协议直接由前端读取。
  • 进程生命周期管理:Tauri 退出时自动清理 Go 边车进程,防止系统资源泄漏。

📂 项目结构

├── backend/            # Go 语言编写的推理后端 (Sidecar)
│   ├── cmd/server/     # 服务入口
│   └── internal/       # 核心逻辑 (Gemini 适配器、Worker 池、数据库)
├── desktop/            # Tauri 桌面端项目 (React + Rust)
│   ├── src/            # 前端组件与业务逻辑
│   └── src-tauri/      # Rust 容器配置与系统权限定义
├── frontend/           # 独立 Web 版前端 (保留参考)
└── assets/             # 项目展示资源 (预览图等)

💻 开发者指南

1. 环境准备

  • Go: 1.21+
  • Node.js: 18+ (建议使用 20)
  • Rust: 1.75+ (Tauri 构建必备)

🍎 macOS 打开提示异常

部分 macOS 用户下载应用后会因为系统的 Gatekeeper 安全机制导致无法打开或提示异常。可在终端执行以下命令移除隔离标记:

sudo xattr -r -d com.apple.quarantine "/Applications/大香蕉 AI.app"
  • Google Gemini API Key (用于 Gemini 对接方式)
  • OpenAI API Key (用于 OpenAI 对接方式,可选)

2. 后端开发

cd backend
# 复制并配置 config.yaml 填入您的 API Key
go run cmd/server/main.go

或者使用 Makefile 快捷命令:

make build    # 编译后端
make run      # 运行后端

3. 桌面端开发

cd desktop
npm install
npm run tauri dev

4. Web 前端开发

cd frontend
npm install
npm run dev

5. 自动化构建 (GitHub Actions)

只需推送带有版本号的标签(如 v1.3.0),即可触发自动化构建:

git tag v1.3.0
git push origin v1.3.0

注意:v1.3.0 之后支持通过推送 Tag 自动生成 Release 并上传多平台二进制文件。

6. 自动更新 (Updater)

项目已集成 Tauri 官方 Updater 插件,发布新版本后用户启动应用会收到更新提示,可一键下载安装。

  1. 生成 Updater 签名密钥(仅需一次,务必妥善保存私钥)
cd desktop
npm run tauri signer generate -- -w ~/.tauri/banana-updater.key
  1. 将公钥写入配置:desktop/src-tauri/tauri.conf.jsonplugins.updater.pubkey(公钥内容来自 ~/.tauri/banana-updater.key.pub

示例(只填入 .pub 文件里的 key 内容,不要把私钥提交到仓库):

{
  "plugins": {
    "updater": {
      "pubkey": "YOUR_PUBLIC_KEY_HERE"
    }
  }
}
  1. 配置 GitHub Secrets(用于 CI 生成 *.siglatest.json

GitHub Secrets 指的是 GitHub 仓库页面里的 Actions Secrets:Repo -> Settings -> Secrets and variables -> Actions -> New repository secret

  • TAURI_SIGNING_PRIVATE_KEY: 私钥文件内容(~/.tauri/banana-updater.key 的全文内容,不是文件路径;不要提交到仓库)
  • TAURI_SIGNING_PRIVATE_KEY_PASSWORD: 私钥密码(如生成时设置了密码,否则可不配置)

本地取私钥内容(示例):

cat ~/.tauri/banana-updater.key
  1. 触发发布后,Release Assets 中应包含 latest.json、对应平台安装包,以及同名的 *.sig 文件。

⚙️ 核心配置

配置项 描述
AI对接方式 Gemini(/v1beta)OpenAI(/v1);不同模式使用不同的 Base URL 与模型。
API Base / API Key 兼容标准 OpenAI 格式接口,可替换成任意兼容平台。
生图模型 / 对话模型 生图模型用于生成图片,对话模型用于提示词优化。
Storage Dir 应用默认将图片保存在系统的 AppData (Win) 或 Application Support (Mac) 目录下。
Templates Remote URL 远程模板 JSON 地址(默认 GitHub Raw),启动时会拉取并缓存。
asset:// 自定义资源协议,用于安全、快速地访问本地生成的图片。

提示:OpenAI 类型接口通常要求生图模型(model_id)必填;Gemini 类型需使用 /v1beta 路径。

注意:OpenAI 对接方式当前仅支持 1K 图片生成(具体取决于所用兼容接口)。


🐳 Docker 部署(Web 版)

桌面版不适合 Docker 运行,以下仅用于 后端 + Web 前端 的部署。

1) 后端(Go)

示例 backend/Dockerfile

FROM golang:1.21-alpine AS build
WORKDIR /app
COPY . .
RUN go build -o server cmd/server/main.go

FROM alpine:3.19
WORKDIR /app
COPY --from=build /app/server /app/server
EXPOSE 8080
CMD ["./server"]

2) 前端(Vite 静态)

示例 frontend/Dockerfile(Nginx 托管静态资源):

FROM node:20-alpine AS build
ARG VITE_API_URL
ENV VITE_API_URL=${VITE_API_URL}
WORKDIR /app
COPY . .
RUN npm install && npm run build

FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80

3) docker-compose 示例

version: "3.8"
services:
  backend:
    build: ./backend
    ports:
      - "8080:8080"
    environment:
      - SERVER_PORT=8080
      - TEMPLATES_REMOTE_URL=https://raw.githubusercontent.com/ShellMonster/Nano_Banana_Pro_Web/refs/heads/main/backend/internal/templates/assets/templates.json
    volumes:
      - ./backend/configs:/app/configs
      - ./backend/storage:/app/storage
      - ./backend/data.db:/app/data.db
  frontend:
    ports:
      - "80:80"
    build:
      context: ./frontend
      args:
        VITE_API_URL: http://backend:8080/api/v1
    depends_on:
      - backend

说明:

  • 后端配置优先读取 backend/configs/config.yaml,也可通过环境变量覆盖(如 SERVER_PORTTEMPLATES_REMOTE_URL)。
  • Web 前端通过 VITE_API_URL 注入 API 基地址(构建时生效),也可使用反向代理统一转发。

🤝 贡献与反馈

我们欢迎任何形式的贡献!如果您在使用过程中遇到问题,请通过 GitHub Issue 提交。

  • 反馈 Bug:提供详细的复现步骤与系统环境。
  • 提交 PR:请遵循现有的代码风格,并在提交前进行充分测试。

📄 开源协议

本项目采用 MIT License 协议开源。


📈 Star History

Star History Chart


🙏 特别鸣谢

  • 本项目中的许多优质模板复用了来自 awesome-nanobananapro-prompts 仓库的精选提示词,感谢原作者的无私分享!
  • 项目中的 JSON 提示词优化参考了 fofr 的优秀设计,在此表示感谢!

About

大香蕉 AI 是面向创意工作者的高性能图像生成平台,融合 Gemini 与桌面性能,支持最高 4K 的文生图/图生图。Banana AI is a high‑performance image generator for creators, combining Gemini with native desktop performance for up to 4K text‑to‑image and image‑to‑image.

Resources

License

Stars

Watchers

Forks

Packages

No packages published