Skip to main content

Wan2.1 - referencia de la API de edición general de imágenes

Este tema describe los parámetros de entrada y salida para el modelo de edición general de imágenes Wan.

Este documento es solo para la región China (Beijing). Para usar el modelo, utilice una clave API de la región China (Beijing).
Este modelo utiliza instrucciones simples para realizar diversas tareas de edición de imágenes (expansión de imagen, eliminación de marca de agua, transferencia de estilo, inpainting de imagen y mejora de imagen). Actualmente se admiten las siguientes funciones:
  • Estilización de imagen: Estilización global y local.
  • Edición de contenido de imagen: Edición basada en instrucciones (agregar o modificar contenido de imagen usando instrucciones sin especificar una región), inpainting (agregar, eliminar o modificar contenido en un área específica) y eliminación de marca de agua de texto (chino e inglés).
  • Optimización de tamaño y resolución de imagen: Expansión de imagen (expandir por proporción) y superresolución (mejorar a alta definición).
  • Procesamiento de color de imagen: Colorización (convierte imágenes en blanco y negro o en escala de grises a color).
  • Generación basada en una imagen de referencia: Generación de boceto a imagen (extraer un boceto de la imagen de entrada y luego generar una imagen basada en el boceto) y generación de referencia de personaje de dibujos animados.
Guía relacionada: Edición de imágenes - Wan2.1

Resumen de modelos

Modelo

Precio

Límite de velocidad (compartido por cuentas raíz y usuarios RAM)

RPS de envío de tareas

Tareas simultáneas

wanx2.1-imageedit

$0.020070/imagen

2

2

Efectos del modelo

Función

Imagen de entrada

Prompt de entrada

Imagen de salida

Estilización global

imagen

Convertir al estilo de libro ilustrado francés

imagen

Estilización local

imagen

Cambiar la casa a un estilo de madera.

imagen

Edición basada en instrucciones

imagen

Cambiar su cabello a rojo.

imagen

Inpainting

Imagen de entrada

imagen

Imagen de máscara de entrada (el blanco es el área enmascarada)

imagen

Un conejo de cerámica sosteniendo una flor de cerámica.

Imagen de salida

imagen

Eliminación de marca de agua de texto

imagen

Eliminar el texto de la imagen.

imagen

Expansión de imagen

20250319105917

Un hada verde.

imagen

Superresolución

Imagen borrosa

imagen

Superresolución.

Imagen nítida

imagen

Colorización

imagen

Fondo azul, hojas amarillas.

imagen

Generación de boceto a imagen

Imagen de entrada

imagen

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

Extraer el boceto de la imagen original y generar una nueva imagen

imagen

Generación de referencia de personaje de dibujos animados

Imagen de referencia de entrada (personaje de dibujos animados)

imagen

El personaje de dibujos animados asoma con cautela, mirando una gema azul brillante en la habitación.

Imagen de salida

imagen

Requisitos previos

Llame a la API de edición general de imágenes de Wan mediante HTTP o el SDK de DashScope. Antes de realizar una llamada, obtenga una clave de API y exporte la clave de API como variable de entorno. Para llamar a la API mediante el SDK, instale el SDK de DashScope. El SDK está disponible para Python y Java.

HTTP

Los modelos de imagen tardan mucho en procesarse. Para evitar tiempos de espera, las llamadas HTTP solo admiten la recuperación asíncrona de resultados. Se requieren dos solicitudes:
  1. Crear una tarea para obtener un ID de tarea: Envíe una solicitud para crear una tarea. La respuesta devuelve un ID de tarea (task_id).
  2. Consultar el resultado usando el ID de tarea: Use el ID de tarea del paso anterior para consultar el estado y el resultado de la tarea. Si la tarea es exitosa, la respuesta devuelve una URL de imagen válida por 24 horas.
Después de la creación, la tarea entra en una cola para su programación. Llame a la API de consulta para recuperar el estado y el resultado de la tarea.
El modelo general de edición de imágenes tarda aproximadamente de 5 a 15 segundos en procesar una solicitud. El tiempo real depende del número de tareas en la cola y de las condiciones de la red. Por favor, espere pacientemente el resultado.

Paso 1: Crear una tarea para obtener el ID de tarea

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis Reemplace {WorkspaceId} con su ID de espacio de trabajo real.

Parámetros de solicitud

Encabezados de solicitud
Content-Type string (Requerido)El tipo de contenido de la solicitud. Debe ser application/json.Authorization string (Requerido)Autentica la solicitud con una clave API de Model Studio. Ejemplo: Bearer sk-xxxx.X-DashScope-Async string (Requerido)Habilita el procesamiento asíncrono. Las solicitudes HTTP solo admiten llamadas asíncronas. Debe ser enable.
Si falta este encabezado de solicitud, se devuelve el error "current user api does not support synchronous calls".
Cuerpo de la solicitud
model string (Obligatorio)El nombre del modelo, por ejemplo, wanx2.1-imageedit.input object (Obligatorio)La información básica de entrada (prompt).

Propiedades

promptstring(Obligatorio)El prompt utilizado para describir los elementos deseados y las características visuales en la imagen generada.Admite chino e inglés. Longitud máxima: 800 caracteres. Cada carácter chino o letra cuenta como un carácter. Los caracteres excedentes se truncan automáticamente.
Los prompts varían según las diferentes funciones. Le recomendamos revisar los consejos de prompts correspondientes para cada función.
functionstring(Obligatorio)La función de edición de imagen. Actualmente se admiten las siguientes funciones:base_image_url string (Obligatorio)La URL o los datos codificados en Base64 de la imagen de entrada.Requisitos de imagen:
  • Formato de archivo: JPG, JPEG, PNG, BMP, TIFF o WEBP
  • Resolución: El ancho y el alto deben ser de 512 a 4,096 píxeles
  • Tamaño de archivo: Máximo 10 MB
  • La URL no puede contener caracteres chinos
Formatos de imagen de entrada:
  1. Usar una URL pública
    • Se admiten los protocolos HTTP o HTTPS.
    • Ejemplo: http://wanx.alicdn.com/material/20250318/stylization_all_1.jpeg
  2. Pasar cadena de imagen codificada en Base64
    • Formato de datos: data:{MIME_type};base64,{base64_data}
    • Ejemplo: data:image/jpeg;base64,GDU7MtCZzEbTbmRZ......
    • La cadena codificada en el ejemplo está incompleta y es solo para fines demostrativos. Para más información, consulte Formatos admitidos.
mask_image_url string (Opcional)Este parámetro es obligatorio solo cuando function se establece en description_edit_with_mask (inpainting). No es necesario para otras funciones.La URL o los datos codificados en Base64 de la imagen de máscara.Puede pasar una URL accesible públicamente (HTTP/HTTPS) o una cadena codificada en Base64. Para más información, consulte Formatos admitidos.Requisitos de la imagen de máscara:
  • Resolución: Debe coincidir con la resolución de la imagen especificada por base_image_url. El ancho y el alto deben ser de 512 a 4,096 píxeles
  • Formato de archivo: JPG, JPEG, PNG, BMP, TIFF o WEBP
  • Tamaño de archivo: Máximo 10 MB
  • La URL no puede contener caracteres chinos
Requisitos de color del área de máscara:
  • Área blanca: Indica la parte que se va a editar. Debe ser blanco puro (valor RGB [255,255,255]). De lo contrario, es posible que no se identifique correctamente.
  • Área negra: Indica la parte que no necesita cambiarse. Debe ser negro puro (valor RGB [0,0,0]). De lo contrario, es posible que no se identifique correctamente.
Para obtener una imagen de máscara, utilice Photoshop u otra herramienta.
parameters object (Opcional)Los parámetros de procesamiento de imagen.

Propiedades

  • General
  • Estilización global
  • Edición basada en instrucciones
  • Expansión de imagen
  • Superresolución
  • Generación de boceto a imagen
n integer (Opcional)El número de imágenes a generar. Rango de valores: 1 a 4. Valor predeterminado: 1.seedinteger(Opcional)La semilla de números aleatorios, utilizada para controlar la aleatoriedad del contenido generado por el modelo. Rango de valores: [0, 2147483647].Si no se proporciona, el algoritmo genera automáticamente un número aleatorio como semilla. Para mantener el contenido generado relativamente estable, utilice el mismo valor de parámetro de semilla.watermark bool (Opcional)Especifica si se debe agregar una marca de agua. La marca de agua se encuentra en la esquina inferior derecha de la imagen y muestra "Generated by AI".
  • false (predeterminado)
  • true
  • Estilización global
  • Pasar un archivo local (Base64)
  • Estilización local
  • Edición basada en instrucciones
  • Inpainting
  • Eliminación de marca de agua de texto
  • Expansión de imagen
  • Superresolución
  • Colorización
  • Generación de boceto a imagen
  • Generación de referencia de personaje de dibujos animados
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "stylization_all",
    "prompt": "Convert to French picture book style",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/stylization_all_1.jpeg"
  },
  "parameters": {
    "n": 1
  }
}'

Parámetros de respuesta

output objectLa información de salida de la tarea.

Propiedades

task_id stringEl ID de la tarea. Válido para consultas durante 24 horas.task_status stringEl estado de la tarea.

Valores de enumeración

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: La tarea no existe o se desconoce su estado.
request_id stringIdentificador único de solicitud para rastreo y solución de problemas.code stringCódigo de error. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.message stringMensaje de error detallado. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.
  • Respuesta exitosa
  • Respuesta de error
Guarde el task_id para consultar el estado y el resultado de la tarea.
{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

Paso 2: Consultar resultado por ID de tarea

GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id} Reemplace {WorkspaceId} con su ID de espacio de trabajo real.

Parámetros de solicitud

Encabezados de solicitud
Authorization string (Requerido)Autentica la solicitud con una clave API de Model Studio. Ejemplo: Bearer sk-xxxx.
Parámetros de ruta
task_id string (Obligatorio)El ID de la tarea.
  • Consultar resultado de la tarea
Reemplace 86ecf553-d340-4e21-xxxxxxxxx con su task_id real.
curl -X GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Parámetros de respuesta

outputobjectLa información de salida de la tarea.

Propiedades

task_id stringEl ID de la tarea. Válido para consultas durante 24 horas.task_status stringEl estado de la tarea.

Valores de enumeración

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: La tarea no existe o se desconoce su estado.
submit_time stringLa hora en que se envió la tarea. La hora está en UTC+8 y el formato es YYYY-MM-DD HH:mm:ss.SSS.scheduled_time stringLa hora en que se ejecutó la tarea. La hora está en UTC+8 y el formato es YYYY-MM-DD HH:mm:ss.SSS.end_time stringLa hora en que se completó la tarea. La hora está en UTC+8 y el formato es YYYY-MM-DD HH:mm:ss.SSS.results array objectUna lista de resultados de tareas, que incluye URL de imágenes y mensajes de error para tareas parcialmente fallidas.
{
    "results": [
        {
            "url": ""
        },
        {
            "code": "",
            "message": ""
        }
    ]
}
task_metrics objectEstadísticas del resultado de la tarea.

Propiedades

TOTAL integerEl número total de tareas.SUCCEEDED integerEl número de tareas exitosas.FAILED integerEl número de tareas fallidas.
code stringCódigo de error. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.message stringMensaje de error detallado. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.
usage objectLas estadísticas de información de salida. Solo se cuentan los resultados exitosos.

Propiedades

image_count integerNúmero de imágenes generadas exitosamente. Facturación: Costo = Número de imágenes × Precio unitario.
request_id stringIdentificador único de solicitud para rastreo y solución de problemas.
  • Tarea exitosa
  • Tarea fallida
  • Tarea parcialmente fallida
Los datos de la tarea (estado de la tarea y URL de imágenes) se conservan solo durante 24 horas y luego se eliminan automáticamente. Guarde las imágenes generadas con prontitud.
{
    "request_id": "eeef0935-02e9-9742-bb55-xxxxxx",
    "output": {
        "task_id": "a425c46f-dc0a-400f-879e-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-02-21 17:56:31.786",
        "scheduled_time": "2025-02-21 17:56:31.821",
        "end_time": "2025-02-21 17:56:42.530",
        "results": [
            {
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/aaa.png"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

SDK de DashScope

Primero, asegúrese de haber instalado la versión más reciente del SDK de DashScope. De lo contrario, podría producirse un error de tiempo de ejecución. El SDK de DashScope actualmente admite Python y Java. Los nombres de los parámetros en el SDK son mayormente consistentes con los de la API HTTP. La estructura de los parámetros depende de la encapsulación del SDK para los diferentes lenguajes. Para descripciones de los parámetros, consulte Llamada HTTP. El procesamiento del modelo de video tarda mucho tiempo, por lo que el servicio utiliza un enfoque asíncrono. El SDK proporciona un contenedor que admite llamadas síncronas y asíncronas.
El modelo general de edición de imágenes tarda aproximadamente de 5 a 15 segundos en procesar una solicitud. El tiempo real depende del número de tareas en la cola y de las condiciones de la red. Por favor, espere pacientemente el resultado.

SDK de Python

Al utilizar el SDK de Python para procesar archivos de imagen, ingrese una imagen mediante uno de los siguientes tres métodos. Elija el método que mejor se adapte a su escenario.
  1. URL pública: Una URL de imagen accesible públicamente que utiliza el protocolo HTTP o HTTPS.
  2. Codificación Base64: Pase la cadena del archivo codificado en Base64 en el formato data:{MIME_type};base64,{base64_data}.
  3. Ruta de archivo local: Admite tanto rutas absolutas como relativas. Consulte la siguiente tabla para ver los formatos de ruta de archivo válidos.

System

Ruta de archivo a pasar

Ejemplo (ruta absoluta)

Ejemplo (ruta relativa)

Linux o macOS

file://{ruta absoluta o relativa del archivo}

file:///home/images/test.png

file://./images/test.png

Windows

file://D:/images/test.png

file://./images/test.png

Código de ejemplo

Antes de llamar al código, instale o actualice el SDK de Python de DashScope a la versión más reciente: pip install -U dashscope. Consulte Instalar el SDK.
  • Llamada síncrona
  • Llamada asíncrona
Este ejemplo muestra una llamada síncrona y admite tres métodos de entrada de imagen: URL pública, codificación Base64 y 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
    }
}

SDK de Java

Al utilizar el SDK de Java para procesar archivos de imagen, ingrese una imagen mediante uno de los siguientes tres métodos. Elija el método que mejor se adapte a su escenario.
  1. URL pública: Una URL de imagen accesible públicamente que utiliza el protocolo HTTP o HTTPS.
  2. Codificación Base64: Pase la cadena del archivo codificado en Base64 en el formato data:{MIME_type};base64,{base64_data}.
  3. Ruta de archivo local: Solo se admiten rutas absolutas. Consulte la siguiente tabla para ver los formatos de ruta de archivo válidos.

System

Ruta de archivo a pasar

Ejemplo

Linux o macOS

file://{ruta absoluta del archivo}

file:///home/images/test.png

Windows

file:///{ruta absoluta del archivo}

file:///D:/images/test.png

Código de ejemplo

Antes de llamar al código, instale o actualice el SDK de Java de DashScope a la versión más reciente. Consulte Instalar el SDK.
  • Llamada síncrona
  • Llamada asíncrona
Este ejemplo muestra una llamada síncrona y admite tres métodos de entrada de imagen: URL pública, codificación Base64 y ruta de archivo local.
Ejemplo de solicitud
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;

/**
 * Environment requirements
 *      dashscope java SDK >=2.20.9
 * Update Maven dependency:
 *      https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
 */

public class ImageEditSync {
    static {Constants.baseHttpApiUrl="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";}

    // If the environment variable is not configured, replace the following line with: apiKey="sk-xxx"
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * Image input methods: Choose one of the following three.
     *
     * 1. Use a public URL - suitable for publicly accessible images.
     * 2. Use a local file - suitable for local development and testing.
     * 3. Use Base64 encoding - suitable for private images or scenarios requiring encrypted transmission.
     */

    //[Method 1] Public URL
    static String maskImageUrl = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png";
    static String baseImageUrl = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg";

    //[Method 2] Local file path (file://+absolute path or file:///+absolute path)
    // static String maskImageUrl = "file://" + "/your/path/to/mask_image.png";    // Linux/macOS
    // static String baseImageUrl = "file:///" + "C:/your/path/to/base_image.png";  // Windows

    //[Method 3] Base64 encoding
    // static String maskImageUrl = encodeFile("/your/path/to/mask_image.png");
    // static String baseImageUrl = encodeFile("/your/path/to/base_image.png");

    public static void syncCall() {
        // Set the parameters parameter
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);

        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wanx2.1-imageedit")
                        .function(ImageSynthesis.ImageEditFunction.DESCRIPTION_EDIT_WITH_MASK)
                        .prompt("A ceramic rabbit holding a ceramic flower")
                        .maskImageUrl(maskImageUrl)
                        .baseImageUrl(baseImageUrl)
                        .n(1)
                        .size("1024*1024")
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }

    /**
     * Encodes a file into a Base64 string
     * @param filePath The file path
     * @return A Base64 string in the format data:{MIME_type};base64,{base64_data}
     */
    public static String encodeFile(String filePath) {
        Path path = Paths.get(filePath);
        if (!Files.exists(path)) {
            throw new IllegalArgumentException("File does not exist: " + filePath);
        }
        // Detect the MIME type
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot detect file type: " + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("Unsupported or unrecognized image format");
        }
        // Read the file content and encode it
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot read file content: " + filePath);
        }

        String encodedString = Base64.getEncoder().encodeToString(fileBytes);
        return "data:" + mimeType + ";base64," + encodedString;
    }

    public static void main(String[] args) {
        syncCall();
    }
}
Ejemplo de respuesta
La URL es válida durante 24 horas. Descargue la imagen oportunamente.
{
    "request_id": "bf6c6361-f0fc-949c-9d60-xxxxxx",
    "output": {
        "task_id": "958db858-153b-4c81-b243-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.png?xxxxxx"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

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. Esta API también tiene códigos de estado específicos, como se muestra en la siguiente tabla.

Código de estado HTTP

Código de error de API (code)

Mensaje de error de API (message)

Descripción

400

InvalidParameter

InvalidParameter

Los parámetros de la solicitud no son válidos.

400

IPInfringementSuspect

Se sospecha que los datos de entrada están involucrados en una infracción de propiedad intelectual.

Se sospecha que los datos de entrada (como el prompt o la imagen) infringen derechos de propiedad intelectual. Verifique la entrada para asegurarse de que no contenga contenido que represente un riesgo de infracción.

400

DataInspectionFailed

Los datos de entrada pueden contener contenido inapropiado.

Los datos de entrada (como el prompt o la imagen) pueden contener contenido inapropiado. Modifique la entrada e inténtelo de nuevo.

500

InternalError

InternalError

El servicio presenta anomalías. Inténtelo de nuevo para descartar un problema ocasional.

Formatos de imagen de entrada

Formatos admitidos

Las imágenes de entrada admiten múltiples formatos de cadena, como se muestra en la siguiente tabla.

Método de invocación

HTTP

SDK de Python

SDK de Java

Métodos de entrada de imagen admitidos

  • URL pública

  • Codificación Base64

  • URL pública

  • Codificación Base64

  • Ruta de archivo local

  • URL pública

  • Codificación Base64

  • Ruta de archivo local

Método 1: Usar URL pública
  • Proporcione una dirección de imagen accesible públicamente. Se admiten los protocolos HTTP o HTTPS.
  • Ejemplo: https://xxxx/img.png
Método 2: Usar codificación Base64 Convierta un archivo de imagen local a una cadena Base64 y concaténela en el formato data:{MIME_type};base64,{base64_data}.
  • Para el código de conversión, consulte Código de ejemplo
  • {MIME_type}: El tipo de medio de la imagen, que debe coincidir con el formato de archivo
  • {base64_data}: La cadena codificada en Base64 del archivo de imagen
  • Referencia de tipos MIME:

    Formato de imagen

    Tipo MIME

    JPEG

    image/jpeg

    JPG

    image/jpeg

    PNG

    image/png

    BMP

    image/bmp

    TIFF

    image/tiff

    WEBP

    image/webp

  • Ejemplo: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDg...... Nota: La cadena Base64 anterior está truncada con fines demostrativos. En el uso real, pase la cadena codificada completa.
Método 3: Usar ruta de archivo local
  • HTTP no admite rutas de archivos locales. Solo el SDK de Python y el SDK de Java admiten este método.
  • Para las reglas de ruta de archivo local, consulte SDK de Python y SDK de Java.

FAQ

Para preguntas frecuentes sobre modelos de imagen (facturación de modelos, reglas de limitación de tasa y errores frecuentes de API), consulte Preguntas frecuentes sobre la API de imágenes.