Cette rubrique décrit les paramètres d'entrée et de sortie du modèle Wan d'édition d'image générale.
ImportantCe document concerne uniquement la région China (Beijing). Pour utiliser le modèle, servez-vous d'une clé API de la région China(Beijing).
Ce modèle utilise des instructions simples pour réaliser diverses tâches d'édition d'image (expansion d'image, suppression de filigrane, transfert de style, inpainting et amélioration d'image). Les fonctionnalités suivantes sont actuellement prises en charge :
- Stylisation d'image : Stylisation globale et locale.
- Édition du contenu de l'image : Édition basée sur des instructions (ajout ou modification du contenu de l'image via des instructions sans spécifier de zone), inpainting (ajout, suppression ou modification de contenu dans une zone définie) et suppression de filigranes textuels (chinois et anglais).
- Optimisation de la taille et de la résolution de l'image : Expansion d'image (agrandissement proportionnel) et super résolution (amélioration vers la haute définition).
- Traitement des couleurs de l'image : Colorisation (conversion d'images en noir et blanc ou en niveaux de gris vers la couleur).
- Génération basée sur une image de référence : Génération d'image à partir d'un croquis (extraction d'un croquis depuis l'image d'entrée puis génération d'une nouvelle image basée sur ce croquis) et génération par référence de personnage de dessin animé.
Guide associé : Édition d'image - Wan2.1
Présentation du modèle
Modèle | Prix | Limite de taux (partagée entre les comptes racines et les utilisateurs RAM) | |
|---|---|---|---|
RPS de soumission de tâche | Tâches simultanées | ||
wanx2.1-imageedit | 0,020070 $/image | 2 | 2 |
Effets du modèle
Fonctionnalité | Image d'entrée | Invite d'entrée | Image de sortie |
|---|---|---|---|
Stylisation globale |
| Convertir en style livre d'images français |
|
Stylisation locale |
| Changer la maison en style bois. |
|
Édition basée sur des instructions |
| Changer ses cheveux en rouge. |
|
Inpainting | Image d'entrée
Image de masque d'entrée (le blanc correspond à la zone masquée)
| Un lapin en céramique tenant une fleur en céramique. | Image de sortie
|
Suppression de filigrane textuel |
| Supprimer le texte de l'image. |
|
Expansion d'image |
| Une fée verte. |
|
Super résolution | Image floue
| Super résolution. | Image nette
|
Colorisation |
| Fond bleu, feuilles jaunes. |
|
Génération d'image à partir d'un croquis | Image d'entrée
| Un salon dans un style nordique minimaliste. | Extraire le croquis de l'image originale et générer une nouvelle image
|
Génération par référence de personnage de dessin animé | Image de référence d'entrée (personnage de dessin animé)
| Le personnage de dessin animé jette un coup d'œil prudent, observant un joyau bleu étincelant dans la pièce. | Image de sortie
|
Prérequis
Appelez l'API Wan d'édition d'image générale via HTTP ou le SDK DashScope.
Avant tout appel, obtenez une clé API et exportez-la en tant que variable d'environnement.
Pour appeler l'API avec le SDK, installez le SDK DashScope. Le SDK est disponible pour Python et Java.
HTTP
Les modèles d'image nécessitent un temps de traitement important. Afin d'éviter les délais d'expiration, les appels HTTP prennent uniquement en charge la récupération asynchrone des résultats. Deux requêtes sont nécessaires :
- Créer une tâche pour obtenir un ID de tâche : Envoyez une requête de création de tâche. La réponse renvoie un ID de tâche (
task_id). - Interroger le résultat à l'aide de l'ID de tâche : Utilisez l'ID de tâche obtenu à l'étape précédente pour interroger l'état et le résultat de la tâche. En cas de succès, la réponse renvoie une URL d'image valide pendant 24 heures.
RemarqueAprès sa création, la tâche entre dans une file d'attente pour planification. Appelez l'API d'interrogation pour récupérer l'état et le résultat de la tâche.
Le modèle d'édition d'image générale traite une requête en 5 à 15 secondes environ. Le délai réel dépend du nombre de tâches en attente et des conditions réseau. Veuillez patienter jusqu'à l'obtention du résultat.
Étape 1 : Créer une tâche pour obtenir un ID de tâche
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis
Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.
Paramètres de requête | Stylisation globaleTransmettre un fichier local (Base64)L'exemple suivant montre comment transmettre un paramètre encodé en Base64 pour la stylisation globale. La chaîne encodée en Base64 étant longue, téléchargez image_base64 et copiez l'intégralité de son contenu dans le paramètre Pour plus d'informations sur le format des données, consultez Formats pris en charge. Stylisation localeÉdition basée sur des instructionsDescription de la fonctionnalité : Ajouter ou modifier le contenu de l'image en utilisant uniquement des instructions, sans spécifier de zone. InpaintingDescription de la fonctionnalité : Ajouter, supprimer ou modifier du contenu dans une zone spécifiée. Suppression de filigrane textuelDescription de la fonctionnalité : Prend en charge la suppression de filigranes textuels en chinois et en anglais. Expansion d'imageDescription de la fonctionnalité : Prend en charge l'expansion proportionnelle de l'image vers le haut, le bas, la gauche et la droite. Super résolutionDescription de la fonctionnalité : Prend en charge l'amélioration d'une image floue vers la haute définition. ColorisationDescription de la fonctionnalité : Convertit une image en noir et blanc ou en niveaux de gris en image couleur. Génération d'image à partir d'un croquisDescription de la fonctionnalité : Extrait un croquis de l'image d'entrée, puis génère une image basée sur ce croquis. Génération par référence de personnage de dessin animéDescription de la fonctionnalité : Prend en charge la génération d'une image basée sur un personnage de dessin animé de référence. |
En-têtes de requête | |
Content-Type Type de contenu de la requête. Doit être | |
Authorization Authentifie la requête avec une clé API Model Studio. Exemple : Bearer sk-xxxx. | |
X-DashScope-Async Active le traitement asynchrone. Les requêtes HTTP ne prennent en charge que les appels asynchrones. La valeur doit être ImportantSi cet en-tête de requête est absent, l'erreur « current user api does not support synchronous calls » est renvoyée. | |
Corps de la requête | |
model Nom du modèle, par exemple wanx2.1-imageedit. | |
input Informations d'entrée de base (invite). | |
parameters Paramètres de traitement de l'image. |
Paramètres de réponse | Réponse réussieEnregistrez le Réponse d'erreurÉchec de la création de la tâche. Consultez Codes d'erreur. |
output Informations de sortie de la tâche. | |
request_id Identifiant unique de la requête pour le suivi et le dépannage. | |
code Code d'erreur. Renvoyé uniquement pour les requêtes ayant échoué. Consultez Codes d'erreur. | |
message Message d'erreur détaillé. Renvoyé uniquement pour les requêtes ayant échoué. Consultez Codes d'erreur. |
Étape 2 : Interroger le résultat par ID de tâche
GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.
Paramètres de requête | Interroger le résultat de la tâcheRemplacez |
En-têtes de requête | |
Authorization Authentifie la requête avec une clé API Model Studio. Exemple : Bearer sk-xxxx. | |
Paramètres de chemin | |
task_id ID de la tâche. |
Paramètres de réponse | Tâche réussieLes données de la tâche (état de la tâche et URL des images) ne sont conservées que pendant 24 heures, puis automatiquement supprimées. Enregistrez rapidement les images générées. Échec de la tâcheLorsqu'une tâche échoue, Échec partiel de la tâcheLe modèle peut générer plusieurs images par tâche. Si au moins une image est générée avec succès, l'état de la tâche est |
output Informations de sortie de la tâche. | |
usage Statistiques des informations de sortie. Seuls les résultats réussis sont comptabilisés. | |
request_id Identifiant unique de la requête pour le suivi et le dépannage. |
SDK DashScope
Assurez-vous d'avoir installé la dernière version du SDK DashScope. Dans le cas contraire, une erreur d'exécution pourrait survenir.
Le SDK DashScope prend actuellement en charge Python et Java.
Les noms des paramètres dans le SDK sont globalement cohérents avec ceux de l'API HTTP. La structure des paramètres dépend de l'encapsulation du SDK pour les différents langages. Pour la description des paramètres, consultez Appel HTTP.
Le traitement des modèles vidéo prenant beaucoup de temps, le service utilise une approche asynchrone. Le SDK fournit une enveloppe prenant en charge à la fois les appels synchrones et asynchrones.
Le modèle d'édition d'image générale traite une requête en 5 à 15 secondes environ. Le délai réel dépend du nombre de tâches en attente et des conditions réseau. Veuillez patienter jusqu'à l'obtention du résultat.
SDK Python
Lors de l'utilisation du SDK Python pour traiter des fichiers image, fournissez une image en entrée selon l'une des trois méthodes suivantes. Choisissez la méthode la mieux adaptée à votre scénario.
- URL publique : Une URL d'image accessible publiquement utilisant le protocole HTTP ou HTTPS.
- Encodage Base64 : Transmettez la chaîne de fichier encodée en Base64 au format
data:{MIME_type};base64,{base64_data}. - Chemin de fichier local : Prend en charge les chemins absolus et relatifs. Consultez le tableau suivant pour les formats de chemin de fichier valides.
Système | Chemin de fichier à transmettre | Exemple (chemin absolu) | Exemple (chemin relatif) |
|---|---|---|---|
Linux ou macOS | file://{chemin absolu ou relatif du fichier} | file:///home/images/test.png | file://./images/test.png |
Windows | file://D:/images/test.png | file://./images/test.png |
Exemple de code
RemarqueAvant d'appeler le code, installez ou mettez à niveau le SDK Python DashScope vers la dernière version : pip install -U dashscope. Consultez Installer le SDK.
Appel synchrone
Cet exemple illustre un appel synchrone et prend en charge trois méthodes d'entrée d'image : URL publique, encodage Base64 et chemin de fichier local.
Exemple de requête
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()
Exemple de réponse
L'URL est valide pendant 24 heures. Téléchargez l'image rapidement.
{
"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
}
}
Appel asynchrone
Cet exemple montre uniquement la méthode d'appel asynchrone.
Exemple de requête
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()
Exemple de réponse
- Exemple de réponse pour la création d'une tâche
{
"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
}
- Exemple de réponse pour l'interrogation du résultat d'une tâche
L'URL est valide pendant 24 heures. Téléchargez l'image rapidement.
{
"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
}
}
SDK Java
Lors de l'utilisation du SDK Java pour traiter des fichiers image, fournissez une image en entrée selon l'une des trois méthodes suivantes. Choisissez la méthode la mieux adaptée à votre scénario.
- URL publique : Une URL d'image accessible publiquement utilisant le protocole HTTP ou HTTPS.
- Encodage Base64 : Transmettez la chaîne de fichier encodée en Base64 au format
data:{MIME_type};base64,{base64_data}. - Chemin de fichier local : Seuls les chemins absolus sont pris en charge. Consultez le tableau suivant pour les formats de chemin de fichier valides.
Système | Chemin de fichier à transmettre | Exemple |
|---|---|---|
Linux ou macOS | file://{chemin absolu du fichier} | file:///home/images/test.png |
Windows | file:///{chemin absolu du fichier} | file:///D:/images/test.png |
Exemple de code
RemarqueAvant d'appeler le code, installez ou mettez à niveau le SDK Java DashScope vers la dernière version. Consultez Installer le SDK.
Appel synchrone
Cet exemple illustre un appel synchrone et prend en charge trois méthodes d'entrée d'image : URL publique, encodage Base64 et chemin de fichier local.
Exemple de requête
// 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();
}
}
Exemple de réponse
L'URL est valide pendant 24 heures. Téléchargez l'image rapidement.
{
"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
}
}
Appel asynchrone
Cet exemple montre uniquement la méthode d'appel asynchrone.
Exemple de requête
// 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();
}
}
Exemple de réponse
- Exemple de réponse pour la création d'une tâche
{
"request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
"output": {
"task_id": "7277e20e-aa01-4709-xxxxxxxx",
"task_status": "PENDING"
}
}
- Exemple de réponse pour l'interrogation du résultat d'une tâche
L'URL est valide pendant 24 heures. Téléchargez l'image rapidement.
{
"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
}
}
Codes d'erreur
Si l'appel du modèle échoue et renvoie un message d'erreur, consultez Codes d'erreur pour résoudre le problème.
Cette API possède également des codes d'état spécifiques, comme indiqué dans le tableau suivant.
Code d'état HTTP | Code d'erreur API (code) | Message d'erreur API (message) | Description |
|---|---|---|---|
400 | InvalidParameter | InvalidParameter | Les paramètres de la requête sont invalides. |
400 | IPInfringementSuspect | Input data is suspected of being involved in IP infringement. | Les données d'entrée (telles que l'invite ou l'image) sont soupçonnées de porter atteinte à la propriété intellectuelle. Vérifiez les entrées pour vous assurer qu'elles ne contiennent pas de contenu présentant un risque d'infraction. |
400 | DataInspectionFailed | Input data may contain inappropriate content. | Les données d'entrée (telles que l'invite ou l'image) peuvent contenir du contenu inapproprié. Modifiez les entrées et réessayez. |
500 | InternalError | InternalError | Le service présente une anomalie. Réessayez afin d'écarter un problème ponctuel. |
Formats d'image d'entrée
Formats pris en charge
Les images d'entrée prennent en charge plusieurs formats de chaîne, comme indiqué dans le tableau suivant.
| Méthode d'appel | HTTP | SDK Python | SDK Java |
|---|---|---|---|
Méthodes d'entrée d'image prises en charge |
|
|
|
- Fournissez une adresse d'image accessible publiquement. Les protocoles HTTP et HTTPS sont pris en charge.
- Exemple :
https://xxxx/img.png
Convertissez un fichier image local en chaîne Base64 et concaténez-la au format data:{MIME_type};base64,{base64_data}.
-
Pour le code de conversion, consultez Exemple de code
-
{MIME_type} : Type de média de l'image, qui doit correspondre au format du fichier
-
{base64_data} : Chaîne encodée en Base64 du fichier image
-
Référence des types MIME :
Format d'image
Type MIME
JPEG
image/jpeg
JPG
image/jpeg
PNG
image/png
BMP
image/bmp
TIFF
image/tiff
WEBP
image/webp
-
Exemple :
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDg......Remarque : La chaîne Base64 ci-dessus est tronquée à titre d'exemple. Dans la pratique, transmettez la chaîne encodée complète.
- HTTP ne prend pas en charge les chemins de fichiers locaux. Seuls le SDK Python et le SDK Java permettent cette méthode.
- Pour les règles relatives aux chemins de fichiers locaux, consultez SDK Python et SDK Java.
FAQ
Pour les questions fréquentes concernant les modèles d'image (facturation des modèles, règles de limitation de taux et erreurs d'API courantes), consultez FAQ sur l'API Image.




















