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()

完整使用教程

一、环境安装

  1. 安装 uv(Python 环境管理工具)
    ## 安装 uv
    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. 安装脚本依赖
    uv add google-genai pillow

二、API 密钥配置

  1. 前往 Google AI Studio 创建 API Key
  2. 配置环境变量(永久生效)
    ## 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

常见问题

  1. 错误:未提供API密钥 解决方案:配置 GEMINI_API_KEY 环境变量
  2. 加载图片失败 解决方案:检查图片路径是否正确、文件是否损坏
  3. API 403/配额不足 解决方案:更换API密钥、检查Google账号配额
  4. 图片生成失败 解决方案:简化提示词、降低分辨率重试
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号