Este tópico descreve os parâmetros de entrada e saída do modelo Wan para edição geral de imagens.
Este documento destina-se apenas à região China (Beijing). Para utilizar o modelo, obtenha uma chave de API da região China(Beijing).
Este modelo utiliza instruções simples para executar diversas tarefas de edição de imagem (expansão de imagem, remoção de marca d'água, transferência de estilo, inpainting e aprimoramento de imagem). Os seguintes recursos são suportados atualmente:
Estilização de imagem: Estilização global e local.
Edição de conteúdo de imagem: Edição baseada em instruções (adicionar ou modificar conteúdo da imagem usando instruções sem especificar uma região), inpainting (adicionar, excluir ou modificar conteúdo em uma área especificada) e remoção de marca d'água de texto (chinês e inglês).
Otimização de tamanho e resolução de imagem: Expansão de imagem (expandir por proporção) e super resolução (aprimorar para alta definição).
Processamento de cores de imagem: Colorização (converter imagens em preto e branco ou em escala de cinza para coloridas).
Geração baseada em imagem de referência: Geração de esboço para imagem (extrair um esboço da imagem de entrada e gerar uma imagem com base no esboço) e geração por referência de personagem de desenho animado.
Guia relacionado: Edição de imagens - Wan2.1
Visão geral do modelo
|
Modelo |
Preço |
Limite de taxa (compartilhado por contas raiz e usuários RAM) |
|
|
RPS de envio de tarefas |
Tarefas simultâneas |
||
|
wanx2.1-imageedit |
$0,020070/imagem |
2 |
2 |
Efeitos do modelo
|
Recurso |
Imagem de entrada |
Prompt de entrada |
Imagem de saída |
|
Estilização global |
|
Converter para o estilo de livro ilustrado francês |
|
|
Estilização local |
|
Mudar a casa para um estilo de madeira. |
|
|
Edição baseada em instruções |
|
Mudar o cabelo dela para vermelho. |
|
|
Inpainting |
Imagem de entrada
Imagem de máscara de entrada (branco é a área mascarada)
|
Um coelho de cerâmica segurando uma flor de cerâmica. |
Imagem de saída
|
|
Remoção de marca d'água de texto |
|
Remover o texto da imagem. |
|
|
Expansão de imagem |
|
Uma fada verde. |
|
|
Super resolução |
Imagem desfocada
|
Super resolução. |
Imagem nítida
|
|
Colorização |
|
Fundo azul, folhas amarelas. |
|
|
Geração de esboço para imagem |
Imagem de entrada
|
Uma sala de estar em estilo nórdico minimalista. |
Extrair o esboço da imagem original e gerar uma nova imagem
|
|
Geração por referência de personagem de desenho animado |
Imagem de referência de entrada (personagem de desenho animado)
|
O personagem de desenho animado espia cautelosamente, olhando para uma gema azul brilhante na sala. |
Imagem de saída
|
Pré-requisitos
Chame a API de edição geral de imagens Wan usando HTTP ou o DashScope SDK.
Antes de fazer uma chamada, obtenha uma chave de API e exporte a chave de API como uma variável de ambiente.
Para chamar a API usando o SDK, instale o DashScope SDK. O SDK está disponível para Python e Java.
HTTP
Os modelos de imagem levam muito tempo para processar. Para evitar tempos limite, as chamadas HTTP suportam apenas recuperação assíncrona de resultados. Duas solicitações são necessárias:
Crie uma tarefa para obter um ID de tarefa: Envie uma solicitação para criar uma tarefa. A resposta retorna um ID de tarefa (
task_id).Consulte o resultado usando o ID da tarefa: Use o ID da tarefa da etapa anterior para consultar o status e o resultado da tarefa. Se a tarefa for bem-sucedida, a resposta retorna uma URL de imagem válida por 24 horas.
Após a criação, a tarefa entra em uma fila para agendamento. Chame a API de consulta para recuperar o status e o resultado da tarefa.
O modelo de edição geral de imagens leva cerca de 5 a 15 segundos para processar uma solicitação. O tempo real depende do número de tarefas na fila e das condições da rede. Aguarde pacientemente pelo resultado.
Etapa 1: Criar uma tarefa para obter o ID da tarefa
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis
Substitua {WorkspaceId} pelo seu ID do workspace real.
Parâmetros da solicitação |
Estilização global
Passar um arquivo local (Base64)O exemplo a seguir mostra como passar um parâmetro codificado em Base64 para estilização global. Como a string codificada em Base64 é longa, baixe image_base64 e copie todo o seu conteúdo para o parâmetro Para mais informações sobre o formato de dados, consulte Formatos suportados.
Estilização local
Edição baseada em instruçõesDescrição do recurso: Adicionar ou modificar conteúdo da imagem usando apenas instruções, sem especificar uma região.
InpaintingDescrição do recurso: Adicionar, excluir ou modificar conteúdo em uma área especificada.
Remoção de marca d'água de textoDescrição do recurso: Suporta a remoção de marcas d'água de texto em chinês e inglês.
Expansão de imagemDescrição do recurso: Suporta a expansão da imagem proporcionalmente para cima, baixo, esquerda e direita.
Super resoluçãoDescrição do recurso: Suporta o aumento de escala de uma imagem desfocada para alta definição.
ColorizaçãoDescrição do recurso: Converte uma imagem em preto e branco ou em escala de cinza para uma imagem colorida.
Geração de esboço para imagemDescrição do recurso: Extrai um esboço da imagem de entrada e gera uma imagem com base no esboço.
Geração por referência de personagem de desenho animadoDescrição do recurso: Suporta a geração de uma imagem com base em um personagem de desenho animado de referência.
|
Cabeçalhos da solicitação |
|
|
Content-Type O tipo de conteúdo da solicitação. Deve ser |
|
|
Authorization Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx. |
|
|
X-DashScope-Async Ativa o processamento assíncrono. As solicitações HTTP suportam apenas chamadas assíncronas. Deve ser Importante
Se este cabeçalho de solicitação estiver ausente, o erro "current user api does not support synchronous calls" será retornado. |
|
Corpo da solicitação |
|
|
model O nome do modelo, por exemplo, wanx2.1-imageedit. |
|
|
input As informações básicas de entrada (prompt). |
|
|
parameters Os parâmetros de processamento de imagem. |
Parâmetros da resposta |
Resposta bem-sucedidaSalve o
Resposta de erroFalha na criação da tarefa. Consulte Códigos de erro.
|
|
output As informações de saída da tarefa. |
|
|
request_id Identificador único da solicitação para rastreamento e solução de problemas. |
|
|
code Código de erro. Retornado apenas para solicitações com falha. Consulte Códigos de erro. |
|
|
message Mensagem de erro detalhada. Retornada apenas para solicitações com falha. Consulte Códigos de erro. |
Etapa 2: Consultar resultado pelo ID da tarefa
GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
Substitua {WorkspaceId} pelo seu ID do workspace real.
Parâmetros da solicitação |
Consultar resultado da tarefaSubstitua
|
Cabeçalhos da solicitação |
|
|
Authorization Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx. |
|
Parâmetros de caminho |
|
|
task_id O ID da tarefa. |
Parâmetros da resposta |
Tarefa bem-sucedidaOs dados da tarefa (status da tarefa e URLs de imagem) são retidos por apenas 24 horas e depois removidos automaticamente. Salve as imagens geradas prontamente. Tarefa falhouQuando uma tarefa falha,
Tarefa parcialmente falhouO modelo pode gerar várias imagens por tarefa. Se pelo menos uma for bem-sucedida, o status da tarefa é
|
|
output As informações de saída da tarefa. |
|
|
usage As estatísticas das informações de saída. Apenas resultados bem-sucedidos são contados. |
|
|
request_id Identificador único da solicitação para rastreamento e solução de problemas. |
DashScope SDK
Primeiro, certifique-se de ter instalado a versão mais recente do DashScope SDK. Caso contrário, pode ocorrer um erro de tempo de execução.
O DashScope SDK suporta atualmente Python e Java.
Os nomes dos parâmetros no SDK são majoritariamente consistentes com os da API HTTP. A estrutura dos parâmetros depende do encapsulamento do SDK para diferentes linguagens. Para descrições dos parâmetros, consulte 万相-图生视频-基于首帧(2.1-2.6).
O processamento do modelo de vídeo leva muito tempo, portanto o service usa uma abordagem assíncrona. O SDK fornece um wrapper que suporta chamadas síncronas e assíncronas.
O modelo de edição geral de imagens leva cerca de 5 a 15 segundos para processar uma solicitação. O tempo real depende do número de tarefas na fila e das condições da rede. Aguarde pacientemente pelo resultado.
Python SDK
Ao usar o Python SDK para processar arquivos de imagem, insira uma imagem usando um dos três métodos a seguir. Escolha o método que melhor se adapta ao seu cenário.
URL pública: Uma URL de imagem acessível publicamente que usa o protocolo HTTP ou HTTPS.
Codificado em Base64: Passe a string do arquivo codificada em Base64 no formato
data:{MIME_type};base64,{base64_data}.Caminho do arquivo local: Suporta caminhos absolutos e relativos. Consulte a tabela a seguir para formatos válidos de caminho de arquivo.
|
Sistema |
Caminho do arquivo a ser passado |
Exemplo (caminho absoluto) |
Exemplo (caminho relativo) |
|
Linux ou macOS |
file://{caminho absoluto ou relativo do arquivo} |
file:///home/images/test.png |
file://./images/test.png |
|
Windows |
file://D:/images/test.png |
file://./images/test.png |
Código de exemplo
Antes de chamar o código, instale ou atualize o DashScope Python SDK para a versão mais recente: pip install -U dashscope. Consulte Instalar o SDK.
Chamada síncrona
Este exemplo mostra uma chamada síncrona e suporta três métodos de entrada de imagem: URL pública, codificação Base64 e caminho de arquivo local.
Exemplo de solicitação
import base64
import os
from http import HTTPStatus
from dashscope import ImageSynthesis
import dashscope
import mimetypes
"""
Environment requirements:
dashscope python SDK >= 1.23.8
Install/Upgrade SDK:
pip install -U dashscope
"""
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
# If the environment variable is not configured, replace the following line with: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# --- Helper function: for Base64 encoding ---
# Format is 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}"
"""
Image input methods:
Choose one of the following three methods.
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] Use a public image URL
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"
# [Method 2] Use a local file (supports absolute and relative paths)
# Format requirement: file:// + file path
# Example (absolute path):
# mask_image_url = "file://" + "/path/to/your/mask_image.png" # Linux/macOS
# base_image_url = "file://" + "C:/path/to/your/base_image.jpeg" # Windows
# Example (relative path):
# mask_image_url = "file://" + "./mask_image.png" # Based on the actual path
# base_image_url = "file://" + "./base_image.jpeg" # Based on the actual path
# [Method 3] Use a Base64-encoded image
# mask_image_url = encode_file("./mask_image.png") # Based on the actual path
# base_image_url = encode_file("./base_image.jpeg") # Based on the actual path
def sample_sync_call_imageedit():
print('please wait...')
rsp = ImageSynthesis.call(api_key=api_key,
model="wanx2.1-imageedit",
function="description_edit_with_mask",
prompt="A ceramic rabbit holding a ceramic flower",
mask_image_url=mask_image_url,
base_image_url=base_image_url,
n=1)
assert rsp.status_code == HTTPStatus.OK
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
for result in rsp.output.results:
print("---------------------------")
print(result.url)
else:
print('sync_call Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_sync_call_imageedit()
Exemplo de resposta
A URL é válida por 24 horas. Baixe a imagem prontamente.
{
"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
}
}
Chamada assíncrona
Este exemplo mostra apenas o método de chamada assíncrona.
Exemplo de solicitação
import os
from http import HTTPStatus
from dashscope import ImageSynthesis
import dashscope
"""
Environment requirements:
dashscope python SDK >= 1.23.4
Install/Upgrade SDK:
pip install -U dashscope
"""
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
# If the environment variable is not configured, replace the following line with: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# Use a public image URL
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"
def sample_async_call_imageedit():
# Asynchronous call, returns a task_id
rsp = ImageSynthesis.async_call(api_key=api_key,
model="wanx2.1-imageedit",
function="description_edit_with_mask",
prompt="A ceramic rabbit holding a ceramic flower",
mask_image_url=mask_image_url,
base_image_url=base_image_url,
n=1)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print("task_id: %s" % rsp.output.task_id)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
# Get asynchronous task information
status = ImageSynthesis.fetch(task=rsp, api_key=api_key)
if status.status_code == HTTPStatus.OK:
print(status.output.task_status) # check the task status
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(status.status_code, status.code, status.message))
# Wait for the asynchronous task to finish
rsp = ImageSynthesis.wait(rsp)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(rsp.output)
for result in rsp.output.results:
print("---------------------------")
print(result.url)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_async_call_imageedit()
Exemplo de resposta
-
Exemplo de resposta para criação de uma tarefa
{ "status_code": 200, "request_id": "6dc3bf6c-be18-9268-9c27-xxxxxx", "code": "", "message": "", "output": { "task_id": "686391d9-7ecf-4290-a8e9-xxxxxx", "task_status": "PENDING", "video_url": "" }, "usage": null } -
Exemplo de resposta para consulta de resultado de tarefa
A URL é válida por 24 horas. Baixe a imagem prontamente.
{ "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?Expires=17xxxxxx" } ], "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 } }
Java SDK
Ao usar o Java SDK para processar arquivos de imagem, insira uma imagem usando um dos três métodos a seguir. Escolha o método que melhor se adapta ao seu cenário.
URL pública: Uma URL de imagem acessível publicamente que usa o protocolo HTTP ou HTTPS.
Codificado em Base64: Passe a string do arquivo codificada em Base64 no formato
data:{MIME_type};base64,{base64_data}.Caminho do arquivo local: Apenas caminhos absolutos são suportados. Consulte a tabela a seguir para formatos válidos de caminho de arquivo.
|
Sistema |
Caminho do arquivo a ser passado |
Exemplo |
|
Linux ou macOS |
file://{caminho absoluto do arquivo} |
file:///home/images/test.png |
|
Windows |
file:///{caminho absoluto do arquivo} |
file:///D:/images/test.png |
Código de exemplo
Antes de chamar o código, instale ou atualize o DashScope Java SDK para a versão mais recente. Consulte Instalar o SDK.
Chamada síncrona
Este exemplo mostra uma chamada síncrona e suporta três métodos de entrada de imagem: URL pública, codificação Base64 e caminho de arquivo local.
Exemplo de solicitação
// 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();
}
}
Exemplo de resposta
A URL é válida por 24 horas. Baixe a imagem prontamente.
{
"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
}
}
Chamada assíncrona
Este exemplo mostra apenas o método de chamada assíncrona.
Exemplo de solicitação
// Copyright (c) Alibaba, Inc. and its affiliates.
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisListResult;
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.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;
import java.util.Map;
/**
* Environment requirements
* dashscope java SDK >= 2.20.1
* Update Maven dependency:
* https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
*/
public class ImageEditAsync {
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");
//[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";
public static void asyncCall() {
// 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("---async call, please wait a moment----");
result = imageSynthesis.asyncCall(param);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
}
System.out.println(JsonUtils.toJson(result));
String taskId = result.getOutput().getTaskId();
System.out.println("taskId=" + taskId);
try {
result = imageSynthesis.wait(taskId, apiKey);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
}
System.out.println(JsonUtils.toJson(result));
System.out.println(JsonUtils.toJson(result.getOutput()));
}
public static void listTask() throws ApiException, NoApiKeyException {
ImageSynthesis is = new ImageSynthesis();
AsyncTaskListParam param = AsyncTaskListParam.builder().build();
param.setApiKey(apiKey);
ImageSynthesisListResult result = is.list(param);
System.out.println(result);
}
public void fetchTask(String taskId) throws ApiException, NoApiKeyException {
ImageSynthesis is = new ImageSynthesis();
// If DASHSCOPE_API_KEY is set as an environment variable, apiKey can be empty.
ImageSynthesisResult result = is.fetch(taskId, apiKey);
System.out.println(result.getOutput());
System.out.println(result.getUsage());
}
public static void main(String[] args) {
asyncCall();
}
}
Exemplo de resposta
-
Exemplo de resposta para criação de uma tarefa
{ "request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx", "output": { "task_id": "7277e20e-aa01-4709-xxxxxxxx", "task_status": "PENDING" } } -
Exemplo de resposta para consulta de resultado de tarefa
A URL é válida por 24 horas. Baixe a imagem prontamente.
{ "request_id": "3d740fc4-a968-9c36-b0e7-xxxxxxxx", "output": { "task_id": "34dcf4b0-ed84-441e-91cb-xxxxxxxx", "task_status": "SUCCEEDED", "results": [ { "url": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/xxx.png" } ], "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", "task_metrics": { "TOTAL": 1, "SUCCEEDED": 1, "FAILED": 0 } }, "usage": { "image_count": 1 } }
Códigos de erro
Se a chamada do modelo falhar e retornar uma mensagem de erro, consulte Códigos de erro para resolução.
Esta API também possui códigos de status específicos, conforme mostrado na tabela a seguir.
|
Código de status HTTP |
Código de erro da API (code) |
Mensagem de erro da API (message) |
Descrição |
|
400 |
InvalidParameter |
InvalidParameter |
Os parâmetros da solicitação são inválidos. |
|
400 |
IPInfringementSuspect |
Input data is suspected of being involved in IP infringement. |
Os dados de entrada (como o prompt ou imagem) são suspeitos de violação de propriedade intelectual. Verifique a entrada para garantir que não contenha conteúdo que represente risco de violação. |
|
400 |
DataInspectionFailed |
Input data may contain inappropriate content. |
Os dados de entrada (como o prompt ou imagem) podem conter conteúdo inadequado. Modifique a entrada e tente novamente. |
|
500 |
InternalError |
InternalError |
O service está anormal. Tente novamente para descartar um problema ocasional. |
Formatos de imagem de entrada
Formatos suportados
As imagens de entrada suportam múltiplos formatos de string, conforme mostrado na tabela a seguir.
|
Método de invocação |
HTTP |
Python SDK |
Java SDK |
|
Métodos de imagem de entrada suportados |
|
|
|
Método 1: Usar URL pública
Forneça um endereço de imagem acessível publicamente. Os protocolos HTTP ou HTTPS são suportados.
Exemplo:
https://xxxx/img.png
Método 2: Usar codificação Base64
Converta um arquivo de imagem local para uma string Base64 e concatene-a no formato data:{MIME_type};base64,{base64_data}.
Para o código de conversão, consulte Código de exemplo
{MIME_type}: O tipo de mídia da imagem, que deve corresponder ao formato do arquivo
{base64_data}: A string codificada em Base64 do arquivo de imagem
-
Referência de tipo MIME:
Formato de imagem
Tipo MIME
JPEG
image/jpeg
JPG
image/jpeg
PNG
image/png
BMP
image/bmp
TIFF
image/tiff
WEBP
image/webp
-
Exemplo:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDg......Nota: A string Base64 acima está truncada para demonstração. No uso real, passe a string codificada completa.
Método 3: Usar caminho do arquivo local
O HTTP não suporta caminhos de arquivo locais. Apenas o Python SDK e o Java SDK suportam este método.
Para regras de caminho de arquivo local, consulte Python SDK e Java SDK.
FAQ
Para perguntas frequentes sobre modelos de imagem (faturamento de modelos, regras de limitação de taxa e erros frequentes de API), consulte FAQ da API de Imagem.




















