经测评,最近超火的Nano-banana模型是目前最强的图像编辑模型,完美解决了 Flux Kontext、GPT-4o 对主体局部修改出现的变形问题。

一、文生图案例

本篇文章测试的案例是在 AI Studio 中使用的,所以就用它来演示了。
打开“Chat”,在输入框中上传图像和提示词即可。

1.在这里插入图片描述
示例

  1. 比如,上传一张动漫的角色图,然后输入提示词。就可以得到不同场景,但人物保持一致的图像。

    提示词:旗袍少女从侧面视角,伸手抚摸一朵盛开的荷花,身体微微前倾,裙摆随风轻轻飘动。场景是池塘边,荷叶与荷花环绕,水面倒映月光。在这里插入图片描述
    用同样的方式,就可以快速产出一批角色一致性的图像,但这里有几个注意点:

    1)尺寸控制:提示词控制尺寸并不稳定,建议通过上传参考图来固定(生成图尺寸 = 上传图尺寸)。
    2)提示词细化:虽然编辑提示词不用写得很复杂,但越具体、越细致,效果往往越好。
    在这里插入图片描述

  2. 可以直接在画面中添加图片和文字注释,让 AI 自动帮你完成合成!

    提示词:根据输入图像中的注释,生成完整的画面。请移除文字注释,并将对应位置替换为真实的人物和动物。
    在这里插入图片描述
    3.主体一致性
    上传两张人物图:小李和露丝,让他们再演一次泰坦尼克号。然后执行的指令是让 AI 基于两张角色图一次性跑出 6 张分镜图。

    提示词:使用提供的两张人物参考图(男主和女主),创作一组关于他们的浪漫爱情故事的电影分镜。整体风格为写实浪漫的电影质感,具有柔和光影和浓厚氛围感。请生成 6 张连续的分镜画面,每张画面展示故事的发展过程,从初次相遇、情感逐渐升温,到高潮与结局,保持电影般的叙事连贯性。要求人物形象保持一致,表情和动作随剧情自然变化,展现丰富的情绪与张力。画面构图为横版 16:9,不包含文字,仅保留视觉叙事。
    在这里插入图片描述
    以下是完整的分镜图

在这里插入图片描述

在这里插入图片描述

二、前提说明

  1. 平台特性与合规性
    本站是专业AI大模型中转平台,支持“零改造接入”Google Gemini生态(文档明确标注兼容Gemini协议),可直接复用Gemini原生请求格式。使用前需遵守:

    • 您所在地区的法律法规,严禁用于侵权、非法内容生成等场景;
    • Google Gemini API服务条款(参考官方文档);
    • 平台计费规则(新用户注册送0.2美元,限时1.1元兑换1美元额度,按量计费,成本可控)。
  2. 核心优势适配
    平台的“全球中继优化”可降低Gemini图片编辑接口的响应延迟(优化RTT),“多通道容灾”保障图片处理请求稳定性,适合需要高频调用图片编辑能力的场景。

二、对接前准备

1. 账号注册与API Key获取(关键步骤)

  1. 访问平台首页:网站,点击右上角「注册」,按提示填写邮箱、密码完成注册(若有邀请码可补充,无则跳过)。
  2. 注册后登录,进入「控制台」→「API管理」→「生成API Key」:
    • 点击“生成”按钮,系统会生成唯一API Key(立即复制保存,页面刷新后无法再次查看明文);
    • 建议给API Key添加备注(如“Gemini图片编辑专用”),便于后续管理。

2. 确认核心对接信息

基于平台“零改造兼容”特性,对接信息可参考Gemini原生协议,结合Go API BASEURL整合如下:

信息类别 具体内容与说明
BASEURL 固定为 https://api.goaigc.vip(用户提供,无需修改)
接口端点(Endpoint) 拼接格式:{BASEURL}/v1beta/models/gemini-2.5-flash-image-preview:generateContent(复用Gemini原生端点路径)
API Key 从Go API控制台获取的密钥(同时用于Header的Authorization和Query的key参数)
必填请求头 - Authorization: Bearer {API Key}(身份验证)
- Content-Type: application/json(数据格式)
图片格式要求 支持JPEG/PNG格式,需将图片文件转换为Base64编码字符串(请求体inline_data.data字段需此格式)

三、核心对接步骤(含多语言示例)

前置操作:图片转Base64编码

Gemini图片编辑接口要求传入图片的Base64编码,以下是两种常见转换方式:

  • 命令行(Linux/Mac)base64 -i your-image.jpg -o image-base64.txt(生成的image-base64.txt中内容即为编码后字符串);
  • Python代码转换(后续示例会集成此逻辑,无需单独操作)。

1. Python 对接示例(推荐新手)

步骤1:安装依赖

需使用requests库发送HTTP请求,base64库处理图片编码(Python内置,无需额外安装):

pip install requests
步骤2:完整代码实现(含图片编码、请求发送、响应解析)
import requests
import json
import base64
from pathlib import Path

# -------------------------- 1. 基础配置(替换为您的实际信息) --------------------------
BASE_URL = "https://api.goaigc.vip"
API_KEY = "sk-your-goapi-key"  # 从Go API控制台获取的API Key
IMAGE_PATH = "test-image.jpg"  # 本地图片路径(JPEG/PNG)
# 完整接口端点
ENDPOINT = f"{BASE_URL}/v1beta/models/gemini-2.5-flash-image-preview:generateContent"

# -------------------------- 2. 图片转Base64编码 --------------------------
def image_to_base64(image_path):
    """将图片文件转换为Base64编码字符串"""
    try:
        # 读取图片二进制数据
        with open(image_path, "rb") as image_file:
            base64_data = base64.b64encode(image_file.read()).decode("utf-8")
        # 获取图片MIME类型(支持jpeg/png)
        mime_type = "image/jpeg" if image_path.endswith((".jpg", ".jpeg")) else "image/png"
        return {"mime_type": mime_type, "data": base64_data}
    except Exception as e:
        print(f"图片编码失败:{str(e)}")
        exit()

# 执行编码
image_base64_info = image_to_base64(IMAGE_PATH)

# -------------------------- 3. 构造请求头与请求体 --------------------------
# 请求头(必填参数)
headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json"  # 可选,指定响应格式为JSON
}

# 请求体(严格遵循Gemini协议,必填参数已标注)
payload = {
    "contents": [  # 必需:用户输入内容,包含文本指令和图片
        {
            "role": "user",  # 固定为"user"
            "parts": [
                {
                    "text": "Hi, this is a picture of a park. Can you add a small dog sitting on the bench?"  # 图片编辑指令(清晰描述需求)
                },
                {
                    "inline_data": image_base64_info  # 图片Base64信息(来自步骤2)
                }
            ]
        }
    ],
    "generationConfig": {  # 必需:生成配置(控制输出格式)
        "responseModalities": ["image"]  # 必需:指定响应包含图片(核心参数,不可省略)
    }
}

# -------------------------- 4. 发送POST请求并处理响应 --------------------------
try:
    # 发送请求(超时时间设为30秒,适配图片处理耗时)
    response = requests.post(
        url=ENDPOINT,
        headers=headers,
        params={"key": API_KEY},  # Query参数key,与API Key一致
        data=json.dumps(payload),
        timeout=30
    )
    # 检查请求是否成功(200为正常响应码)
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f"请求失败:{str(e)}")
    # 打印错误详情(便于排查问题)
    if response:
        print(f"错误响应内容:{response.text}")
    exit()

# -------------------------- 5. 解析响应(提取编辑后的图片) --------------------------
response_data = response.json()
# 提取编辑后的图片Base64编码(响应结构参考Gemini官方格式)
try:
    edited_image_base64 = response_data["contents"][0]["parts"][0]["inline_data"]["data"]
    edited_image_mime = response_data["contents"][0]["parts"][0]["inline_data"]["mime_type"]
    # 将Base64编码转回图片并保存
    with open("edited-image.jpg", "wb") as output_file:
        output_file.write(base64.b64decode(edited_image_base64))
    print("图片编辑成功!已保存为 edited-image.jpg")
    # 打印Token消耗(平台按量计费依据)
    token_usage = response_data.get("usage", {}).get("total_tokens", 0)
    print(f"本次请求消耗Token:{token_usage}")
except KeyError as e:
    print(f"响应解析失败:缺少关键字段 {str(e)}")
    print(f"完整响应内容:{json.dumps(response_data, indent=2)}")

2. Shell(cURL)对接示例(适合服务器场景)

步骤1:准备图片Base64编码

先通过命令行生成图片Base64编码(以JPEG为例):

# 将图片转为Base64并保存到文件(避免终端直接输出过长内容)
base64 -i test-image.jpg > image-base64.txt
# 读取编码内容(赋值给变量,后续用于请求体)
IMAGE_BASE64=$(cat image-base64.txt | tr -d '\n')  # tr -d '\n' 去除换行符(关键,避免格式错误)
步骤2:发送cURL请求
# 替换为您的API Key
API_KEY="sk-your-goapi-key"
# 接口端点
ENDPOINT="https://api.goaigc.vip/v1beta/models/gemini-2.5-flash-image-preview:generateContent"

# 发送POST请求
curl --location --request POST "$ENDPOINT?key=$API_KEY" \
--header "Authorization: Bearer $API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data-raw '{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "Add a red balloon in the sky of this picture"
        },
        {
          "inline_data": {
            "mime_type": "image/jpeg",
            "data": "'"$IMAGE_BASE64"'"  # 引用图片Base64变量
          }
        }
      ]
    }
  ],
  "generationConfig": {
    "responseModalities": ["image"]
  }
}' > response.json  # 将响应保存到文件

# 提示用户查看结果
echo "请求已发送,响应内容已保存到 response.json"
# (可选)提取编辑后的图片并保存
EDITED_IMAGE_BASE64=$(jq -r '.contents[0].parts[0].inline_data.data' response.json)
echo $EDITED_IMAGE_BASE64 | base64 -d > edited-image.jpg
echo "编辑后的图片已保存为 edited-image.jpg"

四、测试与验证(确保对接成功)

  1. 测试场景选择:建议先用简单指令测试(如“添加一个小太阳”“给人物加一顶帽子”),避免复杂需求导致响应超时。
  2. 验证步骤
    • 执行代码后,检查是否生成edited-image.jpg文件;
    • 打开文件确认编辑效果是否符合指令(如是否成功添加目标元素);
    • 查看响应中的total_tokens(Token消耗),确认计费正常(可在Go API控制台「账单中心」核对)。

五、常见问题与解决方案

问题现象 可能原因 解决方法
请求返回“401 Unauthorized” API Key错误/过期;Header格式错误 1. 重新在Go API控制台生成API Key;2. 确认Authorization格式为“Bearer + 空格 + API Key”
请求返回“404 Not Found” 接口端点拼写错误 核对端点是否为:https://api.goaigc.vip/v1beta/models/gemini-2.5-flash-image-preview:generateContent
请求返回“415 Unsupported Media Type” Content-Type错误 确保Header中Content-Typeapplication/json,且请求体为JSON格式
响应无图片(缺少inline_data responseModalities未设为[“image”] generationConfig中添加"responseModalities": ["image"](必需参数)
图片编码错误(请求失败) Base64包含换行符/图片路径错误 1. 用tr -d '\n'去除Base64中的换行符;2. 确认图片路径正确且文件可读取
请求超时(超过30秒) 图片过大/网络波动 1. 压缩图片(建议小于5MB);2. 延长超时时间(如Python中设timeout=60);3. 利用平台“全球中继”优化(无需额外配置)

六、客服支持与额外说明

1. 联系客服

若遇到上述无法解决的问题(如端点未生效、额度异常),可通过以下方式获取支持:

  • 客服邮箱:1614284665@qq.com(邮件主题需备注“GoAPI + Gemini图片编辑对接”,便于快速识别);
  • 在线时间:工作日 10:00 - 22:00;
  • 微信客服:访问Go API平台首页或控制台,查找微信客服入口(若未找到,可通过邮箱咨询获取)。

2. 注意事项

  • API Key安全:严禁在前端代码(网页、小程序)中明文存储API Key,避免被盗用导致额外计费;
  • 图片大小限制:建议单张图片不超过5MB(过大可能导致请求超时或Token消耗过高);
  • 账单监控:定期在Go API控制台「账单中心」查看Token消耗明细,避免额度意外耗尽(新用户送0.2美元可先用于测试)。

七、立即测试

访问网站

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐