Skip to main content

Edición general de imágenes - Wan2.1

Edite imágenes con prompts de texto utilizando el modelo Wan: outpainting, eliminación de marcas de agua, transferencia de estilo, edición basada en instrucciones, inpainting y restauración.

Este documento se aplica únicamente a la región China (Beijing). Debe utilizar una clave de API de la región China (Beijing) para usar el modelo.

Resumen de modelos

Demostración de rendimiento

imagen

Imagen original

imagen

Cambiar su cabello a rojo

35779519-bfc3-4b0a-a594-d764fe9a46d83005601501

Añadir un par de gafas de sol a la niña

imagen

Convertir al estilo de libro ilustrado francés

Consulte Características clave.
Precios
  • Región de Pekín
La región de Pekín no ofrece una cuota gratuita. Todas las llamadas son facturables. Confirm antes de continuar.

Modelo

Precio unitario

Límite de tasa (compartido por la cuenta de Alibaba Cloud y los usuarios RAM)

Límite de RPS para envío de tareas

Número de tareas simultáneas

wanx2.1-imageedit

$0.020070/imagen

2

2

Introducción

Requisitos previos

Obtenga una clave de API y configúrela como variable de entorno. Si utiliza el SDK de DashScope para realizar llamadas, también necesita instalar el SDK.

Código de ejemplo

Llame a la API de edición de imágenes para realizar inpainting local.
El SDK encapsula el procesamiento asíncrono, por lo que la interfaz se comporta de manera síncrona: una sola solicitud espera el resultado. El ejemplo de curl muestra dos operaciones asíncronas separadas: enviar tarea y consultar resultado.
  • Python
  • Java
  • curl
Admite tres métodos de entrada: URL pública, codificación Base64 o ruta de archivo local.

Ejemplo de solicitud

import base64
import os
import mimetypes
import dashscope
from dashscope.v2 import DashScopeError

"""
Requisitos del entorno:
    SDK de Python dashscope >= 2.0.1
Instalación/actualización del SDK:
    pip install -U dashscope
"""

# La siguiente configuración corresponde a la región de China (Pekín). Sustituya {WorkspaceId} por el ID real de su espacio de trabajo (workspace) al realizar la llamada. El valor de region varía según la región.
client = dashscope.Client(
    # Si la variable de entorno no está configurada, sustituya la siguiente línea por su API Key de Model Studio: api_key="sk-xxx"
    # Las claves de API difieren según la región. Para obtener una clave de API, véase https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="cn-beijing",
)

# --- Función auxiliar: codificación Base64 ---
# El formato es data:{MIME_type};base64,{base64_data}
def encode_file(file_path):
    mime_type, _ = mimetypes.guess_type(file_path)
    if not mime_type or not mime_type.startswith("image/"):
        raise ValueError("Unsupported or unrecognized image format")
    with open(file_path, "rb") as image_file:
        encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
    return f"data:{mime_type};base64,{encoded_string}"

"""
Métodos de entrada de imagen:
Se proporcionan los tres métodos siguientes; elija uno de ellos:

1. Usar una URL pública - para imágenes ya accesibles públicamente
2. Usar un archivo local - para desarrollo y pruebas locales
3. Usar codificación Base64 - para imágenes privadas o escenarios que requieren transmisión cifrada
"""

# [Método 1] Usar una URL pública de imagen
mask_image_url = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png"
base_image_url = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg"

# [Método 2] Usar un archivo local (se admiten rutas absolutas y relativas)
# Requisito de formato: file:// + ruta del archivo
# Ejemplo (ruta absoluta):
# mask_image_url = "file://" + "/path/to/your/mask_image.png"     # Linux/macOS
# base_image_url = "file://" + "C:/path/to/your/base_image.jpeg"  # Windows
# Ejemplo (ruta relativa):
# mask_image_url = "file://" + "./mask_image.png"                 # Use la ruta real
# base_image_url = "file://" + "./base_image.jpeg"                # Use la ruta real

# [Método 3] Usar una imagen codificada en Base64
# mask_image_url = encode_file("./mask_image.png")               # Use la ruta real
# base_image_url = encode_file("./base_image.jpeg")              # Use la ruta real

def sample_sync_call_imageedit():
    print('Espere, por favor...')
    try:
        # generate es una llamada de un solo paso ("enviar + esperar") que devuelve un objeto Job completado.
        job = client.images.generate(
            model="wanx2.1-imageedit",
            function="description_edit_with_mask",
            prompt="A ceramic rabbit holding a ceramic flower",
            # mask_image_url/base_image_url son campos de edición de la sección input, que se pasan mediante extra_input a la sección input de la solicitud.
            extra_input={
                "mask_image_url": mask_image_url,
                "base_image_url": base_image_url,
            },
            n=1,
        )
        print('response: %s' % job)
        for url in job.image_urls:
            print("---------------------------")
            print(url)
    except DashScopeError as e:
        print(f"Código de estado HTTP: {e.status_code}")
        print(f"Código de error: {e.code}")
        print(f"Mensaje de error: {e.message}")
        print("Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")

if __name__ == '__main__':
    sample_sync_call_imageedit()

Ejemplo de respuesta

La URL es válida durante 24 horas. Descargue la imagen oportunamente.
{
    "status_code": 200,
    "request_id": "dc41682c-4e4a-9010-bc6f-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "6e319d88-a07a-420c-9493-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.png?xxxxxx"
            }
        ],
        "submit_time": "2025-05-26 14:58:27.320",
        "scheduled_time": "2025-05-26 14:58:27.339",
        "end_time": "2025-05-26 14:58:39.170",
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Características clave

Utilice el parámetro function para especificar funciones de edición. Todas las funciones siguen el mismo método de llamada descrito en Primeros pasos. Cada sección a continuación muestra el JSON específico de la función para input y parameters para curl.
Una solicitud completa de curl debe incluir campos de nivel superior como model, input y parameters, tal como se describe en la Referencia de la API de edición general de imágenes.

Estilización global

Aplica un estilo artístico a toda la imagen; ideal para libros ilustrados, fondos de redes sociales o arte conceptual.
  • Establezca function en stylization_all.
  • Estilos admitidos:
    • Estilo de libro ilustrado francés
    • Estilo artístico de pan de oro
  • parameters.strength (0.0–1.0, valor predeterminado: 0.5) controla la intensidad de la modificación. Los valores más bajos conservan más del original.
  • Formato del prompt: "Convertir a [estilo]" (por ejemplo, "Convertir a estilo de libro ilustrado francés").

Ejemplo de solicitud

{
  "input": {
    "function": "stylization_all",
    "prompt": "Convert to French picture book style",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/stylization_all_3.png"
  },
  "parameters": {
    "strength": 0.5
  }
}

Imagen de entrada

Imagen de salida

Prompt: Convertir a estilo de libro ilustrado francés

Prompt: Convertir a estilo artístico de pan de oro

imagen

imagen

imagen

imagen

imagen

imagen

Controle el grado de modificación de la imagen con strength
El parámetro parameters.strength (0.0–1.0, valor predeterminado: 0.5) controla la intensidad de la modificación: los valores cercanos a 0 conservan el original, los valores cercanos a 1 modifican más.
Prompt de entrada: Convertir a estilo de libro ilustrado francés.

Imagen de entrada

Imagen de salida

strength=0.0 (valor mínimo)

strength=0.5 (valor predeterminado)

strength=1.0 (valor máximo)

imagen

imagen

imagen

imagen

Estilización local

Aplica un estilo a un área específica; ideal para personalización de personajes o resaltado de productos publicitarios.
  • Establezca function en stylization_local.
  • Estilos admitidos y valores de parámetros:
    • Escultura de hielo: ice
    • Nube: cloud
    • Farol festivo chino: chinese festive lantern
    • Tablón: wooden
    • Porcelana azul y blanca: blue and white porcelain
    • Esponjoso: fluffy
    • Hilo: weaving
    • Globo: balloon
  • Formato del prompt: "Cambiar [objeto] a [estilo]" (por ejemplo, "Cambiar la casa a estilo de madera").

Ejemplo de solicitud

{
  "input": {
    "function": "stylization_local",
    "prompt": "Change the house to wooden style",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/stylization_local_1.png"
  }
}

Imagen de entrada

Imagen de salida

imagen

imagen

Escultura de hielo

imagen

Nube

imagen

Farol festivo chino

imagen

Madera

imagen

Porcelana azul y blanca

imagen

Esponjoso

imagen
Tejido

imagen

Globo

Edición basada en instrucciones

Agrega o modifica contenido mediante instrucciones de texto, sin especificar áreas; ideal para ediciones simples como agregar accesorios o cambiar el color del cabello.
  • Establezca function en description_edit.
  • parameters.strength (0.0–1.0, valor predeterminado: 0.5) controla la intensidad de la modificación. Los valores más bajos conservan más del original.
  • Prompt: Incluya verbos de acción como "agregar" o "modificar". Para eliminaciones, utilice Inpainting local en su lugar.

Ejemplo de solicitud

{
  "input": {
    "function": "description_edit",
    "prompt": "Add a pair of sunglasses to the kitten",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_1.jpeg"
  },
  "parameters": {
    "strength": 0.5
  }
}

Capacidades

Imagen de entrada

Imagen de salida

Añadir un elemento

imagen

imagen

Añadir un par de gafas de sol al gatito.

Modificar un elemento

imagen

imagen

Cambiar su cabello a rojo.

Controle el grado de modificación de la imagen con strength
El parámetro parameters.strength (0.0–1.0, valor predeterminado: 0.5) controla la intensidad de la modificación: los valores cercanos a 0 conservan el original, los valores cercanos a 1 modifican más.
Prompt de entrada: Cambiar su ropa por una camisa de playa estampada y colorida.

Imagen de entrada

Imagen de salida

strength=0.0 (valor mínimo)

strength=0.5 (valor predeterminado)

strength=1.0 (valor máximo)

imagen

imagen

imagen

imagen

Inpainting local

Edita un área enmascarada: agregue, modifique o elimine contenido con control preciso sobre ropa, objetos o elementos no deseados.
  • Establezca function en description_edit_with_mask.
  • Requisitos de máscara: Proporcione mask_image_url donde blanco = área a editar, negro = área a conservar.
  • Prompt: Incluya acciones ("agregar", "modificar") y describa el contenido posterior a la eliminación para las supresiones.
    • Añadir/Modificar: Describa la acción o el resultado final.
    • Eliminar: Deje prompt vacío para objetos pequeños. Para objetos grandes, describa el fondo deseado después de la eliminación, no la acción de eliminación en sí.

Ejemplo de solicitud

{
  "input": {
    "function": "description_edit_with_mask",
    "prompt": "A ceramic rabbit holding a ceramic flower",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_1.jpeg",
    "mask_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_1_mask.png"
  }
}
CapacidadesImagen de entradaImagen de máscara de entrada(El blanco es el área a editar)Imagen de salida
Añadir un elemento
imagen
imagen
imagen
Añadir un sombrero al cachorro.
Alternativamente, describa el resultado esperado: "Un cachorro con sombrero".
Modificar un elemento
imagen
imagen
imagen
Un conejo de cerámica sosteniendo una flor de cerámica.
Alternativamente, describa la acción: "Reemplazar la zanahoria sostenida por el conejo de cerámica con una flor de cerámica".
Eliminar un elemento
imagen
imagen
imagen
Un jarrón de vidrio transparente sobre la mesa.
Describa la escena después de la eliminación, no la eliminación en sí; no escriba "Eliminar el oso pardo".

Eliminación de texto y marcas de agua

Advertencia de riesgo legalEl uso de esta función para procesar imágenes protegidas por derechos de autor (como eliminar la marca de agua de otra marca) puede constituir una infracción de derechos de autor. Asegúrese de tener el derecho legal de utilizar la imagen procesada y asuma todas las responsabilidades legales relacionadas.
Elimina texto en chino/inglés o marcas de agua de las imágenes; útil para procesamiento de materiales o limpieza de anuncios.
  • Establezca function en remove_watermark.
  • Prompt: Use instrucciones generales ("Eliminar el texto") o especifique el tipo ("Eliminar texto en inglés").

Ejemplo de solicitud

{
  "input": {
    "function": "remove_watermark",
    "prompt": "Remove the text in the image",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/remove_watermark_1.png"
  }
}

Imagen de entrada

Imagen de salida (Eliminar el texto en la imagen)

imagen

imagen

imagen

imagen

Outpainting

Expande la imagen proporcionalmente en todas las direcciones con relleno inteligente; ideal para ajustar la composición o convertir relaciones de aspecto.
  • Establezca function en expand.
  • Parámetros relacionados: top_scale, bottom_scale, left_scale y right_scale controlan las proporciones de expansión por dirección (por ejemplo, 1.5 = 1.5× tamaño).
  • Consejo de prompt: Describa la escena completa que espera ver después de la expansión.

Ejemplo de solicitud

{
  "input": {
    "function": "expand",
    "prompt": "A family on the lawn in a park",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/expand_1.jpeg"
  },
  "parameters": {
    "top_scale": 1.5,
    "bottom_scale": 1.5,
    "left_scale": 1.5,
    "right_scale": 1.5
  }
}

Imagen de entrada

Imagen de salida

imagen

imagen

Superresolución de imágenes

Mejora la claridad y aumenta la resolución de imágenes borrosas o de baja resolución; ideal para restaurar fotos antiguas o preparar impresiones en HD.
  • Establezca function en super_resolution.
  • parameters.upscale_factor (1–4, predeterminado: 1) controla el escalado. El valor 1 mejora solo la nitidez, sin ampliar.
  • Consejo de prompt: Use "Superresolución de imagen" o describa el contenido de la imagen.

Ejemplo de solicitud

{
  "input": {
    "function": "super_resolution",
    "prompt": "Image super resolution",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/super_resolution_1.jpeg"
  },
  "parameters": {
    "upscale_factor": 2
  }
}

Imagen de entrada (imagen borrosa)

Imagen de salida (imagen nítida)

imagen

imagen

Colorización de imágenes

Coloriza imágenes en blanco y negro o en escala de grises; útil para fotos históricas o arte lineal.
  • Establezca function en colorization.
  • Prompt: Déjelo vacío para la colorización automática o especifique los colores de los elementos clave (por ejemplo, "fondo azul, hojas amarillas").

Ejemplo de solicitud

{
  "input": {
    "function": "colorization",
    "prompt": "blue background, yellow leaves",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/colorization_1.jpeg"
  }
}

Imagen de entrada

Imagen de salida

imagen

imagen

De arte lineal a imagen

Genera imágenes a partir de arte lineal y prompts de texto, incluyendo dibujo basado en garabatos; útil para conceptos arquitectónicos e ilustraciones.
  • Establezca function en doodle.
  • Parámetro relacionado: parameters.is_sketch — controla cómo el modelo procesa la entrada.
    • false (predeterminado): El modelo extrae arte lineal de la entrada RGB y luego genera la imagen (RGB → arte lineal → imagen).
    • true: El modelo genera directamente desde la entrada RGB como garabatos (RGB → imagen).
  • Prompt: Describa el contenido esperado; más detalle produce mejores resultados.
{
  "input": {
    "function": "doodle",
    "prompt": "A living room in a minimalist Nordic style.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/doodle_1.png"
  },
  "parameters": {
    "is_sketch": false
  }
}

Ejemplo de solicitud 2: Dibujo basado en garabatos

{
  "input": {
    "function": "doodle",
    "prompt": "A tree, in a two-dimensional anime style",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/doodle_2.png"
  },
  "parameters": {
    "is_sketch": true
  }
}

Capacidades

Imagen de entrada

Imagen de salida

De arte lineal a imagen

(is_sketch=false)

imagen

imagen

Una sala de estar en un estilo nórdico minimalista.

Dibujo basado en garabatos

(is_sketch=true)

imagen

imagen

Un árbol, en estilo de anime bidimensional.

Generar imagen basada en un personaje de caricatura de referencia

Advertencia de riesgo legalEl uso de esta función para procesar personajes de caricatura protegidos por derechos de autor puede constituir una infracción de derechos de autor. Debe tener el derecho legal de utilizar el personaje referenciado o usar su propio personaje original. También debe asumir todas las responsabilidades legales relacionadas.
  • Establezca function en control_cartoon_feature.
  • Formato de prompt: "El personaje de dibujos animados [detalles de acción/entorno]..."

Ejemplo de solicitud

{
  "input": {
    "function": "control_cartoon_feature",
    "prompt": "The cartoon character cautiously peeks out, peering at a brilliant blue gem in the room",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/control_cartoon_feature_1.png"
  }
}

Imagen de entrada

Imagen de salida

imagen

imagen

Puesta en marcha

Mejores prácticas

  • Sondeo asíncrono: Utilice intervalos de sondeo graduales (por ejemplo, cada 3 s durante 30 s, y luego aumente) para evitar límites de tasa.
  • Ajuste de parámetros: Pruebe parámetros clave como strength en ensayos a pequeña escala antes de la producción para encontrar los valores óptimos.
  • Almacenamiento de imágenes: Las URL de resultados caducan después de 24 horas. Descargue y transfiera al almacenamiento persistente (por ejemplo, OSS) de inmediato.

Prevención de riesgos

  • Manejo de errores: Verifique task_status en los resultados de la consulta. Si es FAILED, registre code y message para la solución de problemas. Los errores transitorios (por ejemplo, tiempos de espera agotados) pueden resolverse al reintentar.
  • Moderación de contenido: Todo el contenido de entrada y salida se revisa para garantizar el cumplimiento. El contenido que no cumpla las normas devuelve DataInspectionFailed.

Referencia de API

Los parámetros de entrada y respuesta están documentados en la Referencia de la API de edición general de imágenes.

Facturación y limitación de tasa

Códigos de error

Si la llamada al modelo falla y devuelve un mensaje de error, consulte Códigos de error para su resolución.

FAQ

P: ¿Por qué falló mi tarea (FAILED)? Causas comunes:
  1. Fallo en la moderación de contenido: La entrada o la salida activó la política de seguridad.
  2. Error de parámetro: Parámetros de solicitud no válidos (por ejemplo, nombre de function incorrecto o URL inaccesible).
  3. Error interno del modelo: problema de procesamiento inesperado. Verifique los campos code y error en la respuesta de la consulta.