G

GoogleNanoBananaApp

Gemini Image Generator

简洁的跨平台桌面应用,使用 Google Gemini API 生成图片。

功能特性

  • 用户认证: 基于 MySQL 的登录系统,确保只有授权用户可访问
  • 输入文本 Prompt 生成图片
  • 支持上传多张参考图片
  • 多种图片比例选择(1:1, 16:9, 4:3 等)
  • 多种分辨率选择(1K, 2K, 4K)
  • 支持两种模型:gemini-2.5-flash-image 和 gemini-3-pro-image-preview
  • 实时预览生成的图片
  • 一键下载生成的图片
  • 跨平台支持(Windows 和 macOS)

系统要求

  • Python 3.8 或更高版本
  • 有效的 Google AI API 密钥
  • MySQL 数据库访问权限(用于用户认证)

快速开始

开发模式运行

  1. 安装依赖:

    pip install -r requirements.txt
    
  2. 配置数据库和 API 密钥:

    • 编辑 config.json 文件,配置以下字段: json { "api_key": "你的Google AI API密钥", "db_config": { "host": "你的MySQL主机地址", "port": 3306, "user": "数据库用户名", "password": "数据库密码", "database": "数据库名", "table": "nano_banana_users" }, "last_user": "" }
  3. 创建数据库表:

    CREATE TABLE `nano_banana_users` (
     `user_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
     `passwd` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
     `status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    
  4. 添加初始用户:

    python user_util.py add admin your_password
    
  5. 运行应用:

    python image_generator.py
    

首次运行会显示登录界面,使用创建的账户登录。

打包为可执行文件

Windows

双击运行 build_windows.bat 或在命令行执行:

build_windows.bat

生成的可执行文件位于 dist\GeminiImageGenerator.exe

macOS

在终端执行:

chmod +x build_mac.sh
./build_mac.sh

生成的应用程序位于 dist/GeminiImageGenerator.app

配置文件位置

应用会根据运行模式自动选择配置文件位置:

开发模式(直接运行 Python):

  • 配置文件:./config.json(当前目录)

打包后的应用

  • macOS: ~/Library/Application Support/ZB100ImageGenerator/config.json
  • Windows: %APPDATA%\ZB100ImageGenerator\config.json
  • Linux: ~/.config/zb100imagegenerator/config.json

首次运行打包应用时,会自动从打包的模板复制 API 密钥到用户目录。

用户管理

应用内置用户管理工具 user_util.py(仅管理员使用,不随客户端分发)。

用户管理命令

# 添加新用户
python user_util.py add <username> <password>

# 列出所有用户
python user_util.py list

# 禁用用户
python user_util.py disable <username>

# 启用用户
python user_util.py enable <username>

# 重置密码
python user_util.py reset <username> <new_password>

示例

# 添加管理员账户
python user_util.py add admin MySecurePass123

# 查看所有用户
python user_util.py list

# 禁用某个用户
python user_util.py disable testuser

# 重置用户密码
python user_util.py reset admin NewPassword456

安全说明

  • 密码使用 SHA256 哈希存储,数据库和本地均不保存明文
  • 所有数据库操作使用参数化查询,防止 SQL 注入
  • user_util.py 工具仅供管理员使用,不应分发给普通用户
  • 应用会记住上次登录的用户名(可选),但不会保存密码

使用说明

  1. 登录应用

    • 应用启动时显示登录界面
    • 输入用户名和密码
    • 可勾选"记住用户名"选项,下次自动填充用户名
    • 登录成功后进入主界面
  2. 配置 API 密钥

    • 编辑配置文件中的 api_key 字段
    • 或通过应用界面的收藏提示词功能自动保存
  3. 上传参考图片(可选)

    • 点击 "添加图片" 按钮选择一张或多张参考图片
    • 这些图片将作为生成图片的参考
    • 可以单独删除每张图片
  4. 输入 Prompt

    • 在提示词文本框中输入你想生成的图片描述
    • 可以使用 "收藏" 功能保存常用提示词
    • 从下拉菜单快速选择已保存的提示词
  5. 选择生成参数

    • 宽高比: 选择图片的宽高比(1:1, 16:9 等)
    • 图片尺寸: 选择图片的分辨率(1K/2K/4K)
    • AI 模型: 选择使用的模型
  6. 生成图片

    • 点击 "生成图片" 按钮
    • 等待生成完成,生成的图片会显示在预览区域
    • 双击预览图可用系统默认查看器打开
  7. 下载图片

    • 点击 "下载图片" 按钮
    • 选择保存位置和文件格式(PNG/JPEG)

项目结构

Nano_Banana_App/
├── image_generator.py      # 主程序文件(含登录界面和数据库认证)
├── user_util.py            # 用户管理工具(管理员专用)
├── requirements.txt        # Python 依赖
├── config.json             # 配置文件(API密钥+数据库配置)
├── build_windows.bat       # Windows 打包脚本
├── build_mac.sh            # macOS 打包脚本
└── README.md               # 本文件

技术栈

  • GUI 框架: Tkinter(Python 内置)
  • 图片处理: Pillow
  • API 客户端: google-genai
  • 数据库: PyMySQL
  • 打包工具: PyInstaller

获取 API 密钥

访问 Google AI Studio 获取免费的 API 密钥。

注意事项

  • API 密钥会保存在 config.json 文件中,请妥善保管
  • 使用 API 可能会产生费用,请查看 Google AI 的定价信息
  • 生成高分辨率图片(4K)需要更多时间和 API 配额

故障排查

登录相关问题

无法登录 / 数据库连接失败

  • 检查 config.json 中的 db_config 配置是否正确
  • 确认数据库服务器可访问(检查防火墙/网络)
  • 验证数据库用户名和密码是否正确
  • 确认表 nano_banana_users 已创建

"未找到数据库配置" 错误

  • 确保 config.json 包含 db_config 字段
  • 参考快速开始章节的配置示例

"用户名或密码错误" 提示

  • 使用 python user_util.py list 查看用户列表
  • 确认用户状态为 'active'
  • 使用 user_util.py 重置密码或创建新用户

密码不匹配

  • 确保数据库中存储的是 SHA256 哈希值,而非明文密码
  • 使用 user_util.py add 添加用户,会自动计算哈希

配置文件只读错误(macOS/Windows 打包应用)

问题: 提示 "read-only file system: config.json"

原因: 打包后的应用资源目录是只读的,无法在应用包内写入文件

解决方案:

  • :white_check_mark: 已修复:应用现在会自动将配置保存到用户目录
  • macOS: ~/Library/Application Support/ZB100ImageGenerator/config.json
  • Windows: %APPDATA%\ZB100ImageGenerator\config.json
  • 首次运行会自动创建配置文件夹和文件

生成失败

  • 检查 API 密钥是否正确
  • 检查网络连接是否正常
  • 查看错误信息,确认是否超出配额

找不到 API 密钥

  • 开发模式:检查项目目录下的 config.json 文件
  • 打包应用:检查用户目录下的配置文件(见上方配置文件位置)
  • 手动创建配置文件并添加完整配置(参考快速开始章节)

打包失败

  • 确保安装了所有依赖:pip install -r requirements.txt
  • 检查 Python 版本是否符合要求(3.8+)
  • Windows: 确保有 zb100_kehuan.ico 图标文件(或修改打包脚本移除 --icon 参数)
  • 注意: user_util.py 不应打包进客户端版本(仅管理员使用)

技术设计原则

本项目遵循 Linus Torvalds 的设计哲学:

  • 简洁至上: 使用 Tkinter 内置 GUI,避免重型框架
  • 零特殊情况: 统一的错误处理和数据流
  • 实用主义: 直接解决问题,不过度设计
  • 清晰数据结构: 简单的配置管理和图片数据流

许可证

MIT License