|

Domina las 3 soluciones de implementación y el código completo para la API de Inpainting de Nano Banana para la modificación local de imágenes

nano-banana-inpainting-api-image-editing-guide-es 图示

Al editar imágenes con IA, una de las principales preocupaciones de muchos desarrolladores es: ¿Se puede modificar solo una parte local de la imagen sin afectar el resto? Este es el problema central que resuelve la tecnología de inpainting (reparación local/edición local de imágenes).

La buena noticia es que la serie de modelos Nano Banana sí es compatible con inpainting para edición local, y además ofrece capacidades de edición mask-free (sin máscara) más potentes que las soluciones tradicionales. Este artículo detalla 3 esquemas para lograr la edición local mediante API, ayudándote a elegir rápidamente la ruta técnica más adecuada.

Valor central: Después de leer este artículo, dominarás 3 formas de invocar la API de inpainting de Nano Banana, permitiéndote implementar funciones profesionales de edición local de imágenes con IA en tus propios proyectos.


Panorama de las capacidades de Inpainting de Nano Banana: 3 esquemas de edición local

Muchos desarrolladores tienen un malentendido común: creen que Nano Banana solo puede generar imágenes y no es compatible con inpainting. En realidad, Nano Banana no solo es compatible con inpainting, sino que también ofrece múltiples rutas de implementación.

Esquema Modelo Principio Precisión Velocidad Escenario de aplicación
Esquema 1: Edición con lenguaje natural sin máscara Nano Banana 2 Instrucción de texto + imagen original ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Edición rápida, reemplazo de fondo
Esquema 2: Modificación precisa basada en máscara Nano Banana Pro Edit Máscara + instrucción de texto + imagen original ⭐⭐⭐⭐⭐ ⭐⭐⭐ Control preciso del área
Esquema 3: Edición iterativa con diálogo múltiple Nano Banana 2 Diálogo múltiple + contexto ⭐⭐⭐⭐ ⭐⭐⭐ Edición compleja, optimización paso a paso

Diferencias clave entre el Inpainting de Nano Banana y las soluciones tradicionales

Las herramientas tradicionales de inpainting (como Stable Diffusion Inpainting) requieren que los desarrolladores dibujen manualmente una máscara (mask) en blanco y negro para especificar el área a modificar. El avance central de Nano Banana radica en:

  • Impulsado por comprensión semántica: El modelo puede entender instrucciones en lenguaje natural como "cambia el fondo por una playa", identificando automáticamente el área del fondo.
  • Consciente del contexto: Al modificar un área local, automáticamente coincide con la iluminación, perspectiva y colores del entorno circundante.
  • Sin necesidad de máscara: La mayoría de los escenarios de edición no requieren crear una máscara manualmente, reduciendo la barrera de entrada para el desarrollo.

🎯 Recomendación técnica: La capacidad de inpainting de Nano Banana se proporciona a través de una interfaz estándar compatible con OpenAI. Recomendamos realizar la invocación a través de la plataforma APIYI (apiyi.com), que permite gestionar de manera unificada las invocaciones de los dos modelos, Nano Banana 2 y Nano Banana Pro, facilitando las pruebas de cambio entre diferentes esquemas.


Opción 1: Inpainting con lenguaje natural sin máscara (recomendado para empezar)

Esta es una de las características más potentes del inpainting con Nano Banana: modificar áreas locales sin necesidad de una máscara, solo usando descripciones en lenguaje natural.

Principio central del Inpainting sin Máscara de Nano Banana

Nano Banana 2 (basado en Gemini 3.1 Flash Image) tiene capacidades de segmentación semántica integradas. El modelo:

  1. Analiza la instrucción de edición — Comprende qué parte de la imagen quieres modificar.
  2. Identifica automáticamente la región — Localiza los píxeles a modificar mediante comprensión semántica.
  3. Realiza inferencia contextual — Analiza la dirección de la luz, relaciones de perspectiva y relaciones espaciales 3D.
  4. Reemplazo preciso — Modifica el área objetivo manteniendo la coherencia del entorno circundante.

Ejemplo de código mínimo para Inpainting sin Máscara

import openai
import base64

client = openai.OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.apiyi.com/v1"  # Interfaz unificada de APIYI
)

response = client.chat.completions.create(
    model="gemini-2.5-flash-image-preview",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Remove the person from this photo and fill the area with the surrounding background naturally"},
            {"type": "image_url", "image_url": {"url": "https://example.com/your-photo.jpg"}}
        ]
    }]
)

# Extraer la imagen editada
content = response.choices[0].message.content
print("Edición completada, extrayendo datos de la imagen...")

Plantillas de instrucciones de edición comunes para Nano Banana Inpainting

Tipo de edición Plantilla de instrucción (inglés) Explicación en español
Eliminar objeto Remove the [object] from the image and fill naturally Elimina el objeto especificado y rellena de forma natural.
Reemplazar fondo Replace the background with [new scene] Cambia la escena de fondo.
Añadir elemento Add a [object] to the [position] of the image Añade un elemento en una posición específica.
Modificar atributo Change the [object]'s color from [A] to [B] Cambia el color de un objeto.
Desenfocar fondo Blur the background while keeping the foreground sharp Desenfoca el fondo manteniendo el primer plano nítido.
Reparar imperfección Remove the stain/scratch from the [area] Elimina manchas o arañazos de un área.
Ajustar pose Change the person's pose to [description] Ajusta la postura de una persona.
Cambiar estilo Convert the [area] to watercolor painting style Convierte un área a un estilo pictórico específico.

nano-banana-inpainting-api-image-editing-guide-es 图示

Ver código completo para Inpainting sin Máscara (con guardado de imagen y manejo de errores)
#!/usr/bin/env python3
"""
Ejemplo completo de Inpainting sin Máscara con Nano Banana
Edición local de imágenes mediante instrucciones en lenguaje natural
"""

import openai
import base64
import re
from datetime import datetime

# Configuración
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com/v1"

client = openai.OpenAI(api_key=API_KEY, base_url=BASE_URL)

def inpaint_image(image_url: str, edit_instruction: str, output_path: str = None):
    """
    Edita una imagen usando Inpainting sin Máscara

    Args:
        image_url: URL de la imagen original o data URI base64
        edit_instruction: Instrucción de edición en inglés
        output_path: Ruta del archivo de salida (opcional)
    Returns:
        bool: Éxito o fracaso de la operación
    """
    print(f"📝 Instrucción de edición: {edit_instruction}")
    print(f"🖼️  Imagen original: {image_url[:80]}...")

    try:
        response = client.chat.completions.create(
            model="gemini-2.5-flash-image-preview",
            messages=[{
                "role": "user",
                "content": [
                    {"type": "text", "text": f"Generate an image: {edit_instruction}"},
                    {"type": "image_url", "image_url": {"url": image_url}}
                ]
            }]
        )

        content = response.choices[0].message.content

        # Extraer datos de imagen en base64
        patterns = [
            r'data:image/[^;]+;base64,([A-Za-z0-9+/=]+)',
            r'([A-Za-z0-9+/=]{1000,})'
        ]

        base64_data = None
        for pattern in patterns:
            match = re.search(pattern, content)
            if match:
                base64_data = match.group(1)
                break

        if not base64_data:
            print(f"⚠️ No se encontraron datos de imagen, respuesta del modelo: {content[:200]}")
            return False

        # Guardar la imagen
        if not output_path:
            timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
            output_path = f"inpainted_{timestamp}.png"

        image_bytes = base64.b64decode(base64_data)
        with open(output_path, 'wb') as f:
            f.write(image_bytes)

        print(f"✅ ¡Edición completada! Guardada en: {output_path} ({len(image_bytes):,} bytes)")
        return True

    except Exception as e:
        print(f"❌ Error en la edición: {e}")
        return False


# Ejemplo de uso
if __name__ == "__main__":
    # Ejemplo 1: Eliminar objeto
    inpaint_image(
        image_url="https://example.com/photo-with-person.jpg",
        edit_instruction="Remove the person on the right side and fill with natural background",
        output_path="result_remove_person.png"
    )

    # Ejemplo 2: Reemplazar fondo
    inpaint_image(
        image_url="https://example.com/portrait.jpg",
        edit_instruction="Replace the background with a sunset beach scene, keep the person unchanged",
        output_path="result_new_background.png"
    )

    # Ejemplo 3: Modificar atributo local
    inpaint_image(
        image_url="https://example.com/room.jpg",
        edit_instruction="Change the wall color to light blue, keep furniture unchanged",
        output_path="result_wall_color.png"
    )

Opción 2: Inpainting Basado en Máscara (Uso Avanzado)

Cuando necesitas un control preciso a nivel de píxel sobre el área a modificar, puedes usar el modo de máscara de Nano Banana Pro Edit.

Cómo funciona el Inpainting Basado en Máscara

Este modo requiere que proporciones una imagen de máscara en blanco y negro. Las áreas blancas indican las partes que se modificarán, mientras que las negras permanecerán intactas.

Parámetro Descripción Requisitos
Imagen Original La imagen que quieres editar PNG/JPEG, se recomienda no superar 4096×4096
Imagen de Máscara Imagen en blanco y negro que marca el área de edición Mismo tamaño que la original, blanco = área a editar
Instrucción de Edición Describe cómo rellenar el área blanca Las instrucciones en inglés suelen dar mejores resultados

Ejemplo de Código: Inpainting Basado en Máscara

import openai

client = openai.OpenAI(
    api_key="TU_CLAVE_API",
    base_url="https://api.apiyi.com/v1"
)

# Entrada múltiple: imagen original + máscara + instrucción de texto
response = client.chat.completions.create(
    model="gemini-2.5-flash-image-preview",
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "Genera una imagen: La primera imagen es la foto original. La segunda imagen es una máscara donde las áreas blancas indican las regiones a editar. Reemplaza el área enmascarada con una escena de jardín hermosa."
            },
            {"type": "image_url", "image_url": {"url": "https://example.com/original.jpg"}},
            {"type": "image_url", "image_url": {"url": "https://example.com/mask.png"}}
        ]
    }]
)

Cuándo elegir el Inpainting Basado en Máscara

  • Necesitas controlar con precisión los bordes de la edición (por ejemplo, modificar solo una camiseta sin afectar la piel)
  • El área de edición tiene una forma irregular difícil de describir con lenguaje natural
  • Necesitas procesar por lotes múltiples imágenes con la misma área
  • Escenarios profesionales donde la transición de bordes es crítica

💡 Consejo práctico: La forma más sencilla de crear una máscara es usar un pincel en Photoshop o GIMP para pintar de blanco las áreas a modificar y luego exportar como PNG. Si te parece tedioso hacer máscaras manualmente, el modo Mask-Free de la Opción 1 suele ser suficiente para la mayoría de los casos.


Opción 3: Inpainting en Conversación Multiturno (Optimización Iterativa)

Nano Banana 2 permite realizar ediciones en múltiples turnos dentro de una misma sesión, donde cada turno puede modificar el resultado del anterior. Esto es ideal para ajustes finos.

Flujo de Conversación para Inpainting Multiturno

Turno 1: "Cambia el fondo por una oficina" → Obtienes la imagen editada A
Turno 2: Imagen A + "Cambia la taza del escritorio por una laptop" → Obtienes la imagen editada B
Turno 3: Imagen B + "Aumenta la luz general, añade efecto de luz de ventana" → Obtienes la imagen final C

Implementación de Código para Inpainting Multiturno

import openai

client = openai.OpenAI(
    api_key="TU_CLAVE_API",
    base_url="https://api.apiyi.com/v1"
)

# Construir la conversación multiturno
messages = [
    # Turno 1: Edición inicial
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "Reemplaza el fondo con una escena de oficina moderna"},
            {"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
        ]
    }
]

# Solicitud del Turno 1
response_1 = client.chat.completions.create(
    model="gemini-2.5-flash-image-preview",
    messages=messages
)

# Agregar el resultado del Turno 1 al contexto
messages.append({"role": "assistant", "content": response_1.choices[0].message.content})

# Turno 2: Edición basada en el turno anterior
messages.append({
    "role": "user",
    "content": [{"type": "text", "text": "Ahora añade una laptop en el escritorio y haz la iluminación más cálida"}]
})

response_2 = client.chat.completions.create(
    model="gemini-2.5-flash-image-preview",
    messages=messages
)

nano-banana-inpainting-api-image-editing-guide-es 图示


Comparación de diferentes versiones del modelo Nano Banana Inpainting

La elección del modelo Nano Banana depende de tus necesidades de inpainting:

Dimensión de comparación Nano Banana 2 Nano Banana Pro Explicación
ID del modelo gemini-3.1-flash-image-preview gemini-3.0-pro-image
Edición sin máscara (Mask-Free) ✅ Compatible ✅ Compatible Ambos admiten edición con lenguaje natural
Precisión de edición ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Pro tiene una comprensión semántica más fina
Velocidad de generación 3-8 segundos 10-20 segundos La arquitectura Flash es 3-5 veces más rápida
Resolución máxima 4K (4096px) 2K (2048px) Banana 2 tiene mayor resolución
Edición en múltiples rondas ✅ Compatible ✅ Compatible Ambos admiten conversación en múltiples turnos
Precio de la API ~$0.02/llamada ~$0.04/llamada Banana 2 reduce el costo a la mitad
Escenario recomendado Edición por lotes, iteración rápida Retoque profesional, necesidades de alta precisión Se pueden invocar simultáneamente a través de la plataforma APIYI apiyi.com

Recomendaciones para elegir el modelo Nano Banana Inpainting

  • Edición diaria, procesamiento por lotes: Elige Nano Banana 2 — Velocidad rápida, costo bajo, resolución 4K
  • Retoque profesional, material comercial: Elige Nano Banana Pro — La comprensión semántica y reproducción de color más precisas
  • No estás seguro de cuál usar: Primero prueba con Nano Banana 2, si no estás satisfecho, cambia a Pro

Diferencias entre Nano Banana Inpainting y la edición en la versión web de Gemini

Muchos usuarios, después de experimentar la función de edición de imágenes en la versión web de Gemini (gemini.google.com), preguntan: ¿Esta API también puede hacerlo?

La respuesta es sí, pero con diferencias:

Dimensión Versión web de Gemini API Nano Banana
Método de interacción Selección con ratón + descripción textual Invocación pura de API (texto + imagen)
Creación de máscara Herramienta de pincel integrada en la web Necesita preparar la imagen de máscara o usar el modo sin máscara (mask-free)
Precisión de control Selección visualizada, intuitiva Control a nivel de código, puede automatizarse
Procesamiento por lotes No compatible ✅ Admite invocación por lotes
Marca de agua Tiene marca de agua SynthID Tiene marca de agua SynthID
Capacidad de integración Solo uso web Se puede integrar en cualquier aplicación
Precio Gratuito (con límites) Tarificación por uso

Diferencia clave: La experiencia de edición de imágenes de la versión web de Gemini es más interactiva y visual, el usuario puede dibujar la selección directamente con el ratón. La ventaja central de la versión API es la automatización y escalabilidad — puedes procesar imágenes por lotes en el código e integrarlo en el flujo de tu producto.

🎯 Recomendación técnica: Si tu necesidad es integrar funciones de edición de imágenes con IA en tu propio producto, la API es la única opción. A través de la plataforma APIYI apiyi.com puedes obtener acceso a interfaces más estables y soporte técnico.

Mejores Prácticas para Nano Banana Inpainting

Técnicas para Optimizar las Instrucciones de Edición

Una buena indicación puede mejorar significativamente los resultados del inpainting:

Técnica Instrucción Pobre ❌ Instrucción Buena ✅
Descripción Específica "Cambia el fondo" "Reemplaza el fondo con una playa al atardecer, con luz cálida dorada"
Especificar Áreas a Conservar "Cambia el fondo" "Reemplaza el fondo manteniendo a la persona completamente inalterada"
Describir la Iluminación "Añade una lámpara" "Añade una iluminación cálida y suave desde la parte superior izquierda, proyectando sombras suaves"
Describir el Material "Cambia el suelo" "Reemplaza el suelo con un piso de madera de roble claro con veta visible"
Limitar el Alcance "Cambia el color" "Cambia solo el color de la carrocería del coche a azul medianoche, mantén las ventanas y neumáticos sin cambios"

Recomendaciones para Optimizar el Rendimiento de Nano Banana Inpainting

  1. Preprocesamiento de la Imagen de Entrada — Se recomienda entre 1024×1024 y 2048×2048; un tamaño mayor aumenta el tiempo de procesamiento.
  2. Priorizar Instrucciones en Inglés — La precisión de comprensión de las instrucciones en inglés es notablemente superior a la del chino.
  3. Enfocarse en una Modificación por Vez — Divide las ediciones complejas en múltiples pasos, haciendo solo una cosa en cada uno.
  4. Añadir el Prefijo "Generate an image:" — Indica claramente al modelo que debe generar una imagen, no una respuesta de solo texto.

Preguntas Frecuentes

P1: ¿La API de Nano Banana realmente admite inpainting? ¿No es solo para la versión web?

Sí, la API de Nano Banana es totalmente compatible con el inpainting para ediciones locales. Tanto Nano Banana 2 (gemini-3.1-flash-image-preview) como Nano Banana Pro (gemini-3.0-pro-image) admiten la edición de imágenes a través de la API. La característica más potente es el inpainting sin máscara (mask-free): no necesitas crear una máscara, solo describe lo que quieres editar con lenguaje natural y el modelo identificará y modificará automáticamente el área objetivo. Puedes obtener una clave API rápidamente para comenzar a probar a través de la plataforma APIYI apiyi.com.

P2: ¿Qué funciona mejor, Inpainting sin Máscara o con Máscara?

Depende del escenario. Para necesidades comunes como reemplazar fondos, eliminar objetos o cambiar colores, el modo sin máscara suele ser lo suficientemente preciso y mucho más conveniente. Para escenarios que requieren límites extremadamente estrictos (por ejemplo, cambiar solo el estampado de una camiseta sin afectar la piel), el modo con máscara ofrece un control más preciso. Se recomienda probar primero el modo sin máscara y, si no estás satisfecho, usar una máscara. La plataforma APIYI apiyi.com admite la invocación de ambos modos y es muy fácil cambiar entre ellos.

P3: ¿El inpainting de Nano Banana puede igualar los efectos de Photoshop?

En muchos escenarios, ya se acerca mucho e incluso supera a la función de Relleno según el contenido (Content-Aware Fill) de Photoshop. La ventaja de Nano Banana es que comprende la semántica de la escena: por ejemplo, al eliminar a una persona, sabe cómo debería ser el edificio o el paisaje detrás, no solo rellena con texturas simples. Sin embargo, para retoques comerciales extremadamente finos, se recomienda usar Photoshop para los ajustes finales.

P4: ¿Por qué a veces mi instrucción de edición no funciona y el modelo genera una imagen completamente nueva?

Este es un problema común. Asegúrate de que tu instrucción exprese claramente "editar" y no "generar". Se recomienda añadir el prefijo "Generate an image:" a la instrucción y especificar claramente qué partes de la imagen original se deben conservar. Por ejemplo: "Generate an image: Edita la foto original - reemplaza solo el cielo por una noche estrellada, mantén todo lo demás exactamente igual". Si el problema persiste, puedes intentar añadir "Do not change the composition or layout" para restringir al modelo.

P5: ¿Cuál es el costo de la invocación de la API para Nano Banana Inpainting?

La edición de imágenes con Nano Banana 2 cuesta aproximadamente $0.02 por invocación, y con Nano Banana Pro, aproximadamente $0.04 por invocación. Al usar la plataforma APIYI apiyi.com para las invocaciones, puedes obtener precios más ventajosos, con un costo real de aproximadamente ¥0.14 por invocación (Nano Banana 2), lo que la hace adecuada para escenarios de edición de imágenes por lotes.


Resumen

La capacidad de inpainting (edición local) de Nano Banana es mucho más potente de lo que muchos desarrolladores imaginan. Las 3 soluciones tienen sus escenarios de aplicación:

  • Edición con lenguaje natural sin máscara (Mask-Free) — La más conveniente, ideal para la mayoría de escenarios, se recomienda usar primero.
  • Modificación precisa con máscara (Mask-Based) — La más precisa, adecuada para control de píxeles a nivel profesional.
  • Edición iterativa en conversación multironda — La más flexible, perfecta para modificaciones complejas y progresivas.

Independientemente de la solución elegida, el núcleo consiste en enviar la imagen y las instrucciones de edición a través de la API estándar de Chat Completions. Se recomienda utilizar la plataforma APIYI (apiyi.com) para comenzar las pruebas rápidamente; podrás ejecutar tu primer ejemplo de inpainting en 5 minutos.


Referencias

  1. Documentación oficial de Google AI – Generación de imágenes con Nano Banana

    • Enlace: ai.google.dev/gemini-api/docs/image-generation
    • Descripción: Documentación completa de la API de generación y edición de imágenes de Gemini.
  2. Blog de Google Developers – Gemini 2.5 Flash Image

    • Enlace: developers.googleblog.com/introducing-gemini-2-5-flash-image/
    • Descripción: Explicación detallada de la arquitectura técnica y capacidades de Nano Banana.
  3. DataCamp – Guía completa de Gemini 2.5 Flash Image

    • Enlace: datacamp.com/tutorial/gemini-2-5-flash-image-guide
    • Descripción: Guía práctica con ejemplos de código completos.

📝 Autor: Equipo de APIYI | Para intercambio técnico y acceso a la API, visita apiyi.com

Publicaciones Similares