OpenClaw Skills 纳米香蕉专业版(Nano Banana Pro)图片生成与编辑技能
2026-03-04 12:04 更新
技能基础信息
- 技能地址:
https://clawhub.ai/steipete/nano-banana-pro - 英文名称:nano-banana-pro
- 中文名称:纳米香蕉专业版
- 功能描述:基于谷歌 Gemini 3 Pro 图像模型的 AI 图片生成/编辑工具,支持文生图、图生图、图片修改,提供 1K/2K/4K 三种分辨率
- 图标:🖼️
- 依赖环境:Python 3.10+、uv、Google Gemini API Key
官方信息
- 技能唯一标识: nano-banana-pro
- 技能功能描述:使用 Nano Banana Pro(Gemini 3 Pro 图像模型)生成或编辑图片,支持文本生成图片、图片编辑图片,兼容 1K/2K/4K 分辨率,通过 --input-image 参数指定待编辑图片
- 官方主页:
https://clawhub.ai/steipete/nano-banana-pro
👤 作者:Peter Steinberger
👉 Skills 下载地址:nano-banana-pro-1.0.1.zip
核心代码(generate_image.py 全中文注释)
#!/usr/bin/env python3
## /// script
## Python 最低版本要求:3.10及以上
requires-python = ">=3.10"
## 项目依赖第三方库
dependencies = [
"google-genai>=1.0.0", # 谷歌 Gemini API 官方SDK
"pillow>=10.0.0", # Python 图片处理核心库
]
## ///
"""
纳米香蕉专业版 - AI 图片生成与编辑工具
核心功能:文生图、图生图、图片编辑、分辨率自适应
基于 Google Gemini 3 Pro Image 模型
"""
## 导入系统标准库
import argparse
import os
import sys
from pathlib import Path
def get_api_key(provided_key: str | None) -> str | None:
"""
获取 Gemini API 密钥
优先级:命令行参数传入 > 系统环境变量
"""
if provided_key:
return provided_key
return os.environ.get("GEMINI_API_KEY")
def main():
# ========== 1. 解析命令行参数 ==========
parser = argparse.ArgumentParser(description="纳米香蕉专业版 - AI 图片生成工具")
# 必填参数:图片提示词
parser.add_argument("--prompt", "-p", required=True, help="图片生成/编辑的描述提示词")
# 必填参数:输出文件名
parser.add_argument("--filename", "-f", required=True, help="生成图片的保存文件名")
# 可选参数:待编辑的原始图片路径
parser.add_argument("--input-image", "-i", help="需要编辑的输入图片路径(编辑模式专用)")
# 可选参数:输出分辨率
parser.add_argument("--resolution", "-r", choices=["1K", "2K", "4K"], default="1K", help="图片分辨率,默认1K")
# 可选参数:API密钥
parser.add_argument("--api-key", "-k", help="Gemini API密钥,优先级高于环境变量")
# 解析用户输入的参数
args = parser.parse_args()
# ========== 2. 校验API密钥是否存在 ==========
api_key = get_api_key(args.api_key)
if not api_key:
print("错误:未配置 Gemini API 密钥!", file=sys.stderr)
print("解决方案:", file=sys.stderr)
print(" 1. 命令行添加 --api-key 参数", file=sys.stderr)
print(" 2. 配置环境变量:export GEMINI_API_KEY=你的密钥", file=sys.stderr)
sys.exit(1)
# ========== 3. 加载第三方依赖库 ==========
from google import genai
from google.genai import types
from PIL import Image as PILImage
# ========== 4. 初始化 Gemini 客户端 ==========
client = genai.Client(api_key=api_key)
# ========== 5. 处理输出文件路径 ==========
output_path = Path(args.filename)
# 自动创建不存在的文件夹
output_path.parent.mkdir(parents=True, exist_ok=True)
# ========== 6. 加载待编辑图片(编辑模式) ==========
input_image = None
output_resolution = args.resolution
if args.input_image:
try:
# 打开输入图片
input_image = PILImage.open(args.input_image)
print(f"✅ 成功加载输入图片:{args.input_image}")
# 未指定分辨率时,自动根据原图尺寸匹配
if args.resolution == "1K":
width, height = input_image.size
max_dim = max(width, height)
if max_dim >= 3000:
output_resolution = "4K"
elif max_dim >= 1500:
output_resolution = "2K"
print(f"🔍 自动匹配分辨率:{output_resolution}")
except Exception as e:
print(f"❌ 加载图片失败:{str(e)}", file=sys.stderr)
sys.exit(1)
# ========== 7. 构建API请求内容 ==========
if input_image:
# 编辑模式:图片 + 提示词
contents = [input_image, args.prompt]
print(f"🖼️ 正在以 {output_resolution} 分辨率编辑图片...")
else:
# 生成模式:仅提示词
contents = args.prompt
print(f"🖼️ 正在以 {output_resolution} 分辨率生成图片...")
# ========== 8. 调用API生成图片 ==========
try:
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents=contents,
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(image_size=output_resolution)
)
)
# ========== 9. 处理并保存图片 ==========
image_saved = False
for part in response.parts:
# 打印模型返回的文本信息
if part.text:
print(f"💬 模型回复:{part.text}")
# 处理图片二进制数据
elif part.inline_data:
from io import BytesIO
# 读取图片数据
image_data = part.inline_data.data
image = PILImage.open(BytesIO(image_data))
# 统一转换为RGB格式并保存为PNG
if image.mode == "RGBA":
# 透明通道转白色背景
rgb_img = PILImage.new("RGB", image.size, (255, 255, 255))
rgb_img.paste(image, mask=image.split()[3])
rgb_img.save(str(output_path), "PNG")
else:
image.convert("RGB").save(str(output_path), "PNG")
image_saved = True
# ========== 10. 输出执行结果 ==========
if image_saved:
print(f"\n✅ 图片保存成功:{output_path.resolve()}")
else:
print("❌ 错误:API 未返回有效图片", file=sys.stderr)
sys.exit(1)
except Exception as e:
print(f"❌ 图片处理失败:{str(e)}", file=sys.stderr)
sys.exit(1)
## 脚本主入口
if __name__ == "__main__":
main()
完整使用教程
一、环境安装
- 安装 uv(Python 环境管理工具)
## 安装 uv curl -LsSf https://astral.sh/uv/install.sh | sh - 安装脚本依赖
uv add google-genai pillow
二、API 密钥配置
- 前往 Google AI Studio 创建 API Key
- 配置环境变量(永久生效)
## macOS/Linux echo 'export GEMINI_API_KEY="你的API密钥"' >> ~/.zshrc source ~/.zshrc
三、基础命令
1. 文本生成图片(文生图)
## 基础用法(1K默认分辨率)
uv run generate_image.py --prompt "宁静的日式庭院,樱花飘落" --filename "garden.png"
## 指定4K高清分辨率
uv run generate_image.py --prompt "赛博朋克城市夜景" --filename "cyberpunk.png" --resolution 4K
2. 编辑现有图片(图生图)
## 编辑图片:替换天空为暴风雨云,2K分辨率
uv run generate_image.py --prompt "将天空改为氛围感乌云" --filename "new_sky.png" --input-image "photo.jpg" --resolution 2K
高级用法
1. 标准工作流(草稿→迭代→定稿)
- 草稿(快速预览):
--resolution 1K - 迭代优化:修改提示词,保留输入图片
- 最终定稿:
--resolution 4K
2. 提示词模板(高成功率)
## 生成模板
创建图片:主体是猫咪,风格:治愈系水彩,光线:柔和自然光,背景:草地,避免:模糊、变形
## 编辑模板
仅修改:天空颜色;保持不变:人物、构图、光线、文字;禁止新增物体
分辨率映射规则
| 用户描述 | 对应参数 |
|---|---|
| 低清/1080p/默认 | 1K |
| 中等/2K/2048px | 2K |
| 高清/4K/超清 | 4K |
文件名规范
格式:年月日-时分秒-描述名称.png
示例:2026-03-04-15-30-00-japanese-garden.png
常见问题
- 错误:未提供API密钥
解决方案:配置
GEMINI_API_KEY环境变量 - 加载图片失败 解决方案:检查图片路径是否正确、文件是否损坏
- API 403/配额不足 解决方案:更换API密钥、检查Google账号配额
- 图片生成失败 解决方案:简化提示词、降低分辨率重试
以上内容是否对您有帮助:

免费 AI IDE


更多建议: