Skip to content

AiTop100-Nano_Banana 是基于 Python 的图片处理工具,包含 FastAPI 服务端(处理图片上传与 AI 处理)和 Gradio 前端界面(用户交互)。支持图片上传转换、用 gemini-2.5-flash-image-preview 模型进行 AI 修改,集成 46 种 nano-banana 创意玩法。提供多语言提示词支持,自动保存生成图片,可通过 Docker 或源码部署,含 API 客户端与文档,方便开发调用。

Notifications You must be signed in to change notification settings

wittech/aitop100_nano_banana

Repository files navigation

AiTop100-Nano_Banana & FastAPI Server

基于Python requests的AiTop100图片处理FastAPI服务端和客户端实现。

🏗️ 架构说明

项目现在提供两个服务组件:

  1. FastAPI服务端 (fastapi_nano_banana_server.py) - RESTful API 服务,处理图片上传和AI处理
  2. Gradio前端界面 (app.py) - 用户交互Web界面,集成nano-banana创意玩法手册

文件结构

aitop100/
├── app.py                              # Gradio前端Web界面 (端口7860)
├── fastapi_nano_banana_server.py       # FastAPI后端服务 (端口8000)
├── client.py                          # FastAPI API客户端
├── requirements.txt                   # Python依赖包
├── start_services.sh                  # 服务启动脚本
├── Dockerfile                         # Docker镜像构建文件
├── docker-compose.yml                 # Docker Compose配置
├── .env.example                       # 环境变量模板
├── .env                              # 环境变量配置文件
├── DOCKER_README.md                  # Docker部署指南
├── ZHO-nano-banana-Creation_README.md # nano-banana创意玩法手册
├── pictures/                         # 示例图片目录
├── generated_images/                 # 生成图片保存目录
├── logs/                            # 日志文件目录
└── test_server_client.py            # 测试文件

功能特性

  • 图片上传: 将本地图片转换为base64并上传到AiTop100服务器
  • AI图片处理: 使用gemini-2.5-flash-image-preview模型进行图片修改
  • Gradio Web界面: 用户友好的图片修改界面,支持拖拽上传
  • FastAPI服务端: RESTful API接口,支持多客户端调用
  • 流式响应处理: 正确处理服务器返回的流式数据
  • 多语言支持: 支持中文和英文提示词
  • 自动保存: 自动保存生成的图片到本地文件
  • API文档: 自动生成的Swagger文档
  • nano-banana创意玩法: 集成46种创意玩法手册
  • Docker容器化: 完整的Docker部署方案

📦 安装部署

🐳 方式一:Docker 镜像部署 (推荐)

1. 拉取并运行镜像

# 拉取镜像
docker pull wwwzhouhui569/aitop100-nano-banana:latest

# 运行容器
docker run -d \
  --name aitop100-nano-banana \
  -p 8000:8000 \
  -p 7860:7860 \
  -e AITOP100_TOKEN=your_token_here \
  -v $(pwd)/logs:/app/logs \
  -v $(pwd)/generated_images:/app/generated_images \
  wwwzhouhui569/aitop100-nano-banana:latest

2. 访问服务

🛠️ 方式二:Dockerfile 本地构建

1. 构建镜像

git clone <repository-url>
cd aitop100
docker build -t aitop100-nano-banana .

2. 运行容器

docker run -d \
  --name aitop100-nano-banana \
  -p 8000:8000 \
  -p 7860:7860 \
  -e AITOP100_TOKEN=your_token_here \
  -v $(pwd)/logs:/app/logs \
  -v $(pwd)/generated_images:/app/generated_images \
  -v $(pwd)/.env:/app/.env:ro \
  aitop100-nano-banana

💻 方式三:源码启动部署

1. 安装依赖

git clone <repository-url>
cd aitop100
pip install -r requirements.txt

或手动安装:

pip install fastapi uvicorn python-multipart requests pillow python-dotenv gradio

2. 配置环境变量

3. 启动服务

# 方式1: 使用启动脚本 (同时启动FastAPI和Gradio)
chmod +x start_services.sh
./start_services.sh

# 方式2: 分别启动两个服务
# 终端1 - 启动FastAPI后端
python3 fastapi_nano_banana_server.py

# 终端2 - 启动Gradio前端
python3 app.py

4. 访问服务

🚀 快速开始 (推荐Docker)

最快速启动

# 1. 拉取镜像并启动
docker pull wwwzhouhui569/aitop100-nano-banana:latest
docker run -d --name aitop100-nano-banana -p 7860:7860 -p 8000:8000 -e AITOP100_TOKEN=your_token_here wwwzhouhui569/aitop100-nano-banana:latest

# 2. 访问Web界面
# 浏览器打开: http://localhost:7860

获取 AiTop100 Token

  1. 访问 AiTop100官网

    img

  2. 注册/登录账号

  3. 获取 API Token

    浏览器F12 从Appliation>Cookies 中找到 token ey开头的一长串值,这个就是token 值。

    img

  4. 替换上面命令中的 your_token_here

🔧 配置

环境变量配置

在运行服务前,需要配置AiTop100 API Token:

  1. 复制.env.example 为.env

     cp .env.example  .env
  2. 或通过环境变量传递:

    export AITOP100_TOKEN=your_actual_token_here

重要: .env文件包含敏感信息,已被添加到.gitignore中,不会被提交到版本控制。

🎨 使用说明

Web界面使用 (推荐)

  1. 启动服务后,访问: http://localhost:7860

    img

  2. 图片修改功能:

    • 上传图片(支持拖拽)

    • 输入修改提示词(支持中英文)

    • 点击"修改图片"按钮

    • 查看修改结果,可继续修改

      img

    img

  3. 系统设置: 在设置页面配置Token

  4. nano-banana创意玩法: 浏览46种创意玩法手册

API编程使用

FastAPI客户端

from client import AiTop100ApiClient

client = AiTop100ApiClient("http://localhost:8000")

# 上传并处理图片
result_path = client.upload_and_process(
    "path/to/image.jpg",
    "请在这张图片中添加一只机器猫"
)

🌐 API接口文档

启动服务器后,访问以下地址查看完整API文档:

接口概览

POST /upload

上传图片文件

curl -X POST "http://localhost:8000/upload" \
     -H "accept: application/json" \
     -H "Content-Type: multipart/form-data" \
     -F "[email protected]"

POST /process

处理图片

curl -X POST "http://localhost:8000/process" \
     -H "accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{
       "message": "请在这张图片中添加一只机器猫",
       "image_url": "https://example.com/image.jpg",
       "user_id": "user123"
     }'

GET /health

健康检查

curl -X GET "http://localhost:8000/health"

🧪 测试

健康检查

# 检查服务状态
curl http://localhost:8000/health
curl http://localhost:7860/

# Docker容器检查
docker logs aitop100-nano-banana

功能测试

# 运行测试脚本
python3 test_server_client.py

📝 客户端API参考

AiTop100ApiClient类

client = AiTop100ApiClient(base_url="http://localhost:8000")

方法

health_check() -> Dict[str, Any]

  • 检查服务器健康状态

upload_image(image_path: str) -> Optional[str]

  • 上传图片到服务器
  • 返回: 成功时返回图片URL,失败时返回None

process_image(message: str, image_url: str, user_id: str = "api_client") -> Optional[Dict[str, Any]]

  • 使用AI处理图片
  • 返回: 成功时返回处理结果,失败时返回None

upload_and_process(image_path: str, message: str, user_id: str = "api_client", save_result: bool = True) -> Optional[str]

  • 上传并处理图片的一站式方法
  • 返回: 成功时返回生成图片的本地路径

💡 使用示例

基础用法

from client import AiTop100ApiClient

client = AiTop100ApiClient()

# 健康检查
health = client.health_check()
print(f"服务器状态: {health['status']}")

# 上传图片
image_url = client.upload_image("my_image.jpg")

# 处理图片
result = client.process_image("添加彩虹效果", image_url)

# 一站式处理
generated_path = client.upload_and_process(
    "input.jpg", 
    "请添加一只小猫咪",
    save_result=True
)

批处理示例

from client import AiTop100ApiClient

client = AiTop100ApiClient()
images = ["img1.jpg", "img2.jpg", "img3.jpg"]
prompts = ["添加阳光", "添加花朵", "添加彩虹"]

for img, prompt in zip(images, prompts):
    result = client.upload_and_process(img, prompt)
    if result:
        print(f"✅ {img} 处理完成: {result}")
    else:
        print(f"❌ {img} 处理失败")

🔧 故障排除

常见问题

服务器启动失败

  • 检查端口8000是否被占用
  • 确认已安装所有依赖: pip install -r requirements.txt

图片上传失败

  • 检查图片文件是否存在
  • 确认图片格式支持 (JPG, PNG, GIF, BMP, WebP)
  • 检查文件大小 (建议 < 10MB)

AI处理失败

  • 检查网络连接
  • 验证授权令牌是否有效
  • 确认图片URL可访问

客户端连接失败

  • 确认服务器正在运行: http://localhost:8000/health
  • 检查防火墙设置
  • 验证客户端base_url配置

🎯 性能优化建议

  1. 批量处理: 使用会话复用减少连接开销
  2. 错误重试: 实现指数退避重试机制
  3. 缓存: 对相同图片URL进行本地缓存
  4. 并发: 使用异步客户端提高吞吐量

🆚 FastAPI vs 直接客户端对比

特性 FastAPI服务端 直接客户端
使用难度 简单 需要管理token
部署方式 服务化 库调用
多客户端 ✅ 支持 ❌ 每个客户端需要token
API文档 ✅ 自动生成 ❌ 无
错误处理 ✅ 统一处理 ❌ 分散处理
监控日志 ✅ 集中化 ❌ 分布式
性能 额外网络调用 直接调用

📈 版本历史

  • v0.0.1 - 完整图片AI处理工具
    • ✅ FastAPI后端服务 (端口8000)
    • ✅ Gradio Web前端界面 (端口7860)
    • ✅ nano-banana创意玩法手册集成 (46种玩法)
    • ✅ Docker容器化部署
    • ✅ API客户端SDK
    • ✅ 图片修改和连续编辑功能
    • ✅ 多语言提示词支持

🎯 特色功能

nano-banana 创意玩法

项目集成了46种创意玩法,包括但不限于:

  • 图片变手办/手办视频 - 将照片转换为精美手办模型
  • 动漫转真人 - 二次元角色真人化
  • 图片转Funko Pop公仔 - 制作专属Pop公仔
  • 高清修复 - 提升图片分辨率和质量
  • 虚拟试妆 - 化妆效果预览
  • 工业设计套图 - 马克笔、水彩、分析图生成

所有玩法都可在Web界面的"📚 nano-banana创意玩法大合集手册"中找到详细说明和提示词。

📄 许可证

本项目仅用于学习和研究目的。

🙏 致谢

​ 感谢以下项目对本项目提供的有力支持:


📞 联系我们

📬 联系我

🔗 社交媒体

​ 微信号:

image-20250906175827828

如果这个项目对你有帮助,请给我们一个 ⭐ Star!

About

AiTop100-Nano_Banana 是基于 Python 的图片处理工具,包含 FastAPI 服务端(处理图片上传与 AI 处理)和 Gradio 前端界面(用户交互)。支持图片上传转换、用 gemini-2.5-flash-image-preview 模型进行 AI 修改,集成 46 种 nano-banana 创意玩法。提供多语言提示词支持,自动保存生成图片,可通过 Docker 或源码部署,含 API 客户端与文档,方便开发调用。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published