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 数据库访问权限(用于用户认证)
快速开始
开发模式运行
-
安装依赖:
pip install -r requirements.txt -
配置数据库和 API 密钥:
- 编辑
config.json文件,配置以下字段:json { "api_key": "你的Google AI API密钥", "db_config": { "host": "你的MySQL主机地址", "port": 3306, "user": "数据库用户名", "password": "数据库密码", "database": "数据库名", "table": "nano_banana_users" }, "last_user": "" }
- 编辑
-
创建数据库表:
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; -
添加初始用户:
python user_util.py add admin your_password -
运行应用:
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 工具仅供管理员使用,不应分发给普通用户
- 应用会记住上次登录的用户名(可选),但不会保存密码
使用说明
-
登录应用
- 应用启动时显示登录界面
- 输入用户名和密码
- 可勾选"记住用户名"选项,下次自动填充用户名
- 登录成功后进入主界面
-
配置 API 密钥
- 编辑配置文件中的
api_key字段 - 或通过应用界面的收藏提示词功能自动保存
- 编辑配置文件中的
-
上传参考图片(可选)
- 点击 "添加图片" 按钮选择一张或多张参考图片
- 这些图片将作为生成图片的参考
- 可以单独删除每张图片
-
输入 Prompt
- 在提示词文本框中输入你想生成的图片描述
- 可以使用 "收藏" 功能保存常用提示词
- 从下拉菜单快速选择已保存的提示词
-
选择生成参数
- 宽高比: 选择图片的宽高比(1:1, 16:9 等)
- 图片尺寸: 选择图片的分辨率(1K/2K/4K)
- AI 模型: 选择使用的模型
-
生成图片
- 点击 "生成图片" 按钮
- 等待生成完成,生成的图片会显示在预览区域
- 双击预览图可用系统默认查看器打开
-
下载图片
- 点击 "下载图片" 按钮
- 选择保存位置和文件格式(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"
原因: 打包后的应用资源目录是只读的,无法在应用包内写入文件
解决方案:
-
已修复:应用现在会自动将配置保存到用户目录 - 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