Qwen-Image-Edit admite entrada y salida de múltiples imágenes. Puede modificar texto en imágenes, agregar/eliminar/mover objetos, cambiar acciones del sujeto, transferir estilos y mejorar detalles.
Introducción
Antes de realizar una llamada, obtenga una clave de API y expórtela 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.
Python
import os
import base64
import mimetypes
import dashscope
from dashscope import MultiModalConversation
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
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}"
# [Method 1] Use a public image URL
image_url = "https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/yBRq1ZPYEaXdyOdv/img/33a80a19-7ac7-4c64-b0fa-7d685b7046a0.png"
# [Method 2] Use a Base64-encoded image
# image_url = encode_file("./your_image.png")
response = MultiModalConversation.call(
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="qwen-image-3.0-pro",
messages=[{
"role": "user",
"content": [
{"image": image_url},
{"text": "Generate a sophisticated urban-style female portrait. Perfectly preserve the facial features and smooth black long hair of the young woman in the input image. Change her outfit to an elegant urban professional look. Set the scene in a modern minimalist upscale coffee shop."}
]
}],
prompt_extend=True
)
print(response)
if response.status_code == 200:
url = response.output.choices[0].message.content[0]["image"]
print(f"Generated image URL: {url}")
else:
print(f"Error: {response.code} - {response.message}")
Java
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.utils.Constants;
public class ImageEditExample {
public static void main(String[] args) {
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
// [Method 1] Use a public image URL
String imageUrl = "https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/yBRq1ZPYEaXdyOdv/img/33a80a19-7ac7-4c64-b0fa-7d685b7046a0.png";
// [Method 2] Use a Base64-encoded image
// String imageUrl = encodeFile("/path/to/your/image.png");
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", imageUrl),
Collections.singletonMap("text", "Generate a sophisticated urban-style female portrait. Perfectly preserve the facial features and smooth black long hair of the young woman in the input image. Change her outfit to an elegant urban professional look. Set the scene in a modern minimalist upscale coffee shop.")
))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-image-3.0-pro")
.messages(Arrays.asList(userMessage))
.parameter("prompt_extend", true)
.build();
try {
MultiModalConversationResult result = conv.call(param);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String encodeFile(String filePath) {
Path path = Paths.get(filePath);
if (!Files.exists(path)) {
throw new IllegalArgumentException("File does not exist: " + filePath);
}
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");
}
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;
}
}
curl
El siguiente comando utiliza la URL para la región de Singapore. Si utiliza un modelo en la región de China (Pekín), reemplace la URL con: https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--data '{
"model": "qwen-image-3.0-pro",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"image": "https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/yBRq1ZPYEaXdyOdv/img/33a80a19-7ac7-4c64-b0fa-7d685b7046a0.png"
},
{
"text": "Generate a sophisticated urban-style female portrait. Perfectly preserve the facial features and smooth black long hair of the young woman in the input image. She changes from her beige knit top into an elegant urban professional outfit: a champagne silk blouse with a well-tailored dark grey casual blazer and matching high-waisted wide-leg trousers. The scene is in a modern minimalist upscale coffee shop with floor-to-ceiling windows showing a bustling city view. Dark wood tables and leather chairs furnish the interior, with a silver laptop, documents, and a steaming Americano on the table. She sits relaxed, leaning slightly back with one arm on the armrest and the other holding a coffee cup, gazing at the camera with calm, slightly languid eyes and an elegant smile. Polished formal makeup with clean base, defined brows, and mauve lipstick. Soft afternoon light enters from the side through the windows, creating delicate light transitions on her face and clothing. Natural bokeh background in earth tones, greys and warm whites, creating a serene, sophisticated urban office atmosphere."
}
]
}
]
},
"parameters": {
"prompt_extend": true
}
}'
Ejemplo de respuesta
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"content": [
{
"image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
}
],
"role": "assistant"
}
}
]
},
"usage": {
"output_height": 1024,
"output_width": 1024,
"input_image_count": 1,
"input_image_type": "qima_input_1k",
"output_image_count": 1,
"output_image_type": "qima_output_1k"
},
"request_id": "571ae02f-5c9d-436c-83c2-f221e6df0xxx"
}
Descargar imágenes a su dispositivo local
# You need to install requests to download the image: pip install requests
import requests
def download_image(image_url, save_path='output.png'):
try:
response = requests.get(image_url, stream=True, timeout=300) # Set a timeout.
response.raise_for_status() # Raise an exception if the HTTP status code is not 200.
with open(save_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"Image successfully downloaded to: {save_path}")
except requests.exceptions.RequestException as e:
print(f"Image download failed: {e}")
image_url = "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
download_image(image_url, save_path='output.png')
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class ImageDownloader {
public static void downloadImage(String imageUrl, String savePath) {
try {
URL url = new URL(imageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(300000);
connection.setRequestMethod("GET");
InputStream inputStream = connection.getInputStream();
FileOutputStream outputStream = new FileOutputStream(savePath);
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
inputStream.close();
outputStream.close();
System.out.println("Image downloaded successfully to: " + savePath);
} catch (Exception e) {
System.err.println("Image download failed: " + e.getMessage());
}
}
public static void main(String[] args) {
String imageUrl = "http://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx?Expires=xxx";
String savePath = "output.png";
downloadImage(imageUrl, savePath);
}
}
Recomendaciones de modelos
qwen-image-3.0-pro(Calidad insignia): El modelo insignia de Qwen Image 3.0 con capacidades de generación y edición de imágenes integralmente mejoradas, ofreciendo renderizado de texto mejorado, texturas realistas, adherencia semántica y reescritura inteligente de prompts.qwen-image-2.1-pro(Mejor equilibrio de velocidad, calidad y costo): Admite hasta 10 imágenes de referencia para tareas de imagen a imagen y puede generar automáticamente imágenes con canales transparentes basándose en el prompt. No admitenegative_prompt.qwen-image-2.1-turbo(Mejor relación costo-beneficio): El modelo más rentable de la serie Qwen-Image. Admite hasta 10 imágenes de referencia para tareas de imagen a imagen y puede generar automáticamente imágenes con canales transparentes basándose en el prompt. No admitenegative_prompt.qwen-image-3.0: El modelo estándar de Qwen Image 3.0 que equilibra calidad y velocidad.
Para ver los modelos admitidos en cada región, consulte la Lista de modelos.
Instrucciones de entrada
Imágenes de entrada (messages)
El parámetro messages es un arreglo que debe contener un único objeto. Este objeto debe incluir las propiedades role y content. La propiedad role debe establecerse en user. La propiedad content debe incluir tanto image como text (una instrucción de edición). La serie qwen-image-3.0 admite de una a tres imágenes, y la serie qwen-image-2.1 admite de una a diez imágenes.
Las imágenes de entrada deben cumplir con los siguientes requisitos:
-
Los formatos de imagen admitidos son JPG, JPEG, PNG, BMP, TIFF, WEBP y GIF.
La imagen de salida está en formato PNG. Para los GIF animados, solo se procesa el primer fotograma.
-
Para obtener mejores resultados, la resolución de la imagen debe estar entre 384 y 3072 píxeles tanto para el ancho como para la altura. Una resolución baja puede resultar en una salida borrosa, mientras que una resolución alta aumenta el tiempo de procesamiento.
-
El tamaño de un solo archivo de imagen no puede exceder 10 MB.
"messages": [
{
"role": "user",
"content": [
{ "image": "Public URL or Base64 data of Image 1" },
{ "image": "Public URL or Base64 data of Image 2" },
{ "image": "Public URL or Base64 data of Image 3" },
{ "text": "Your editing instruction, for example: 'The girl in Image 1 wears the black dress from Image 2 and sits in the pose from Image 3'" }
]
}
]
Orden de entrada de imágenes
Los números de imagen en los prompts corresponden a la posición en el arreglo: la primera imagen es "imagen 1", la segunda es "imagen 2". También puede usar marcadores como "[imagen 1]" y "[imagen 2]".
{
"content": [
{"text": "Editing instruction, for example: Place the alarm clock from image 1 next to the vase on the dining table in image 2"},
{"image": "https://example.com/image1.png"},
{"image": "https://example.com/image2.png"}
]
}
Imagen de entrada | Imagen de salida | ||
|---|---|---|---|
Imagen 1 |
Imagen 2 |
Prompt: Mover la imagen 1 sobre la imagen 2 |
Prompt: Mover la imagen 2 sobre la imagen 1 |
Métodos de entrada de imágenes
URL pública- Puede proporcionar una URL de imagen accesible públicamente que admita el protocolo HTTP o HTTPS.
- Valor de ejemplo:
https://xxxx/img.png.
Codificación Base64
Convierta el archivo de imagen en una cadena codificada en Base64 y concaténela en el siguiente formato: data:{mime_type};base64,{base64_data}.
{mime_type}: El tipo de medio de la imagen, que debe corresponder al formato del archivo.{base64_data}: La cadena codificada en Base64 del archivo.- Valor de ejemplo:
data:image/jpeg;base64,GDU7MtCZz...(El ejemplo está truncado con fines demostrativos).
Para ejemplos de código completos, consulte Llamada al SDK de Python y Llamada mediante el SDK de Java.
Más parámetros
Ajuste los resultados de generación utilizando los siguientes parámetros opcionales:
- n: Número de imágenes de salida (predeterminado: 1, máximo: 6). El valor de n afecta directamente el costo.
- negative_prompt: Describe contenido a excluir de la imagen (como "desenfoque" o "dedos extra") para optimizar la calidad. La serie qwen-image-2.1 no admite este parámetro; describa los elementos no deseados en el prompt en su lugar.
- size: Resolución de salida en formato
width*height. Las series qwen-image-3.0 y qwen-image-2.1 admiten de 512*512 a 2048*2048 (relación de aspecto de 1:8 a 8:1). Si no se especifica, el modelo recomienda automáticamente una resolución. - prompt_extend: Reescritura de prompts (habilitada por defecto). Habilítela para prompts breves; deshabilítela para prompts detallados o escenarios sensibles a la latencia.
- seed: Semilla aleatoria. Usar el mismo valor produce resultados relativamente estables.
- watermark: Si se debe agregar una marca de agua (deshabilitado de forma predeterminada).
Para obtener una lista completa de parámetros, consulte la referencia de API de Qwen-Image-Edit.
Visión general
Fusión de múltiples imágenes
Imagen de entrada 1 | Imagen de entrada 2 | Imagen de entrada 3 | Imagen de salida |
|---|---|---|---|
|
|
|
La chica en la Imagen 1 lleva el collar de la Imagen 2 y carga la bolsa de la Imagen 3 en su hombro izquierdo. |
Consistencia del sujeto
Imagen de entrada | Imagen de salida 1 | Imagen de salida 2 | Imagen de salida 3 |
|---|---|---|---|
|
Cambie la imagen a una foto de identificación con fondo azul. La persona viste una camisa blanca, un traje negro y una corbata de rayas. |
La persona viste una camisa blanca, un traje gris y una corbata de rayas. Una mano descansa sobre la corbata. El fondo es de color claro. |
La persona lleva una sudadera negra con capucha que dice "Qwen Image" en una fuente de pincelada gruesa. Está apoyada en una barandilla con luz solar en su cabello. Un puente y el mar están en el fondo. |
|
El aire acondicionado está colocado en una sala de estar junto a un sofá. |
Se añade neblina desde la rejilla del aire acondicionado, extendiéndose sobre el sofá. También se agregan hojas verdes. |
El texto manuscrito blanco "Natural Fresh Air Enjoy Breathing" se agrega en la parte superior. |
Creación de bocetos
Imagen de entrada | Imagen de salida | |
|---|---|---|
|
Genere una imagen que coincida con la forma detallada delineada en la Imagen 1 y siga esta descripción: Una mujer joven sonríe en un día soleado. Lleva gafas de sol redondas marrones con montura de estampado de leopardo. Su cabello está recogido pulcramente, lleva aretes de perlas, una bufanda azul oscuro con patrones de estrellas moradas y una chaqueta de cuero negro. |
Genere una imagen que coincida con la forma detallada delineada en la Imagen 1 y siga esta descripción: Un hombre mayor sonríe a la cámara. Su rostro tiene arrugas, su cabello está despeinado por el viento y lleva gafas de lectura de montura redonda. Tiene una bufanda roja desgastada con patrones de estrellas alrededor del cuello y lleva una chaqueta acolchada de algodón. |
Generación creativa de productos
Imagen de entrada | Imagen de salida | ||
|---|---|---|---|
|
Haga que este oso se siente bajo la luna (representada por un contorno de media luna gris claro sobre fondo blanco), sosteniendo una guitarra, con pequeñas estrellas y globos de diálogo con frases como "Be Kind" flotando alrededor. |
Imprima este diseño en una camiseta y una bolsa de papel. Una modelo femenina muestra estos artículos. La mujer también lleva una gorra de béisbol con la frase "Be kind" escrita en ella. |
Un modelo de personaje hiperrealista a escala 1/7, diseñado como un producto comercial terminado, se coloca sobre un escritorio junto a un iMac con teclado blanco. El modelo se sostiene sobre una base acrílica transparente, redonda y limpia, sin etiquetas ni texto. La iluminación profesional de estudio resalta los detalles esculpidos. En la pantalla del iMac al fondo, se muestra el proceso de modelado en ZBrush del mismo modelo. Junto al modelo, coloque una caja de embalaje con una ventana transparente en el frente, mostrando solo la carcasa de plástico transparente en el interior. La caja es ligeramente más alta que el modelo y tiene un tamaño razonable para contenerlo. |
Este oso lleva puesto un traje de astronauta y señala hacia la distancia. |
Este oso lleva puesto un hermoso vestido de gala, con los brazos extendidos en una elegante pose de baile. |
Este oso lleva ropa deportiva, sostiene un balón de baloncesto y tiene una pierna doblada. | |
Generar imagen a partir de mapa de profundidad
Imagen de entrada | Imagen de salida | |
|---|---|---|
|
Genere una imagen que coincida con el mapa de profundidad delineado en la Imagen 1 y siga esta descripción: Una bicicleta azul está estacionada en un callejón lateral, con algunas hierbas creciendo de las grietas en la piedra en el fondo. |
Genere una imagen que coincida con el mapa de profundidad delineado en la Imagen 1 y siga esta descripción: Una bicicleta roja desgastada está estacionada en un camino fangoso, con un denso bosque primitivo en el fondo. |
Generar imagen a partir de puntos clave
Imagen de entrada | Imagen de salida | |
|---|---|---|
|
Genere una imagen que coincida con la pose humana delineada en la Imagen 1 y siga esta descripción: Una mujer china con Hanfu sostiene un paraguas de papel de aceite bajo la lluvia, con un jardín de Suzhou en el fondo. |
Genere una imagen que coincida con la pose humana delineada en la Imagen 1 y siga esta descripción: Un hombre joven está de pie en el andén del metro. Lleva una gorra de béisbol, una camiseta y jeans. Un tren pasa a gran velocidad detrás de él. |
Edición de texto
Imagen de entrada | Imagen de salida | Imagen de entrada | Imagen de salida |
|---|---|---|---|
|
Reemplazar 'HEALTH INSURANCE' en las fichas de Scrabble por 'Tomorrow Will Be Better'. |
|
Cambiar la frase "Take a Breather" en la nota por "Relax and Recharge". |
Imagen de entrada | Imagen de salida | ||
|---|---|---|---|
|
Cambiar "Qwen-Image" a una fuente de goteo de tinta negra. |
Cambiar "Qwen-Image" a una fuente manuscrita negra. |
Cambiar "Qwen-Image" a una fuente de píxeles negra. |
Cambiar "Qwen-Image" a rojo. |
Cambiar "Qwen-Image" a un degradado azul-violeta. |
Cambiar "Qwen-Image" a colores pastel. | |
Cambiar el material de "Qwen-Image" a metal. |
Cambiar el material de "Qwen-Image" a nubes. |
Cambiar el material de "Qwen-Image" a vidrio. | |
Agregar y eliminar
Capacidad | Imagen de entrada | Imagen de salida |
|---|---|---|
Agregar elemento |
|
Agregar un pequeño letrero de madera frente al pingüino que diga "Welcome to Penguin Beach". |
Eliminar elemento |
|
Quitar el pelo del plato. |
Transformación de punto de vista
Imagen de entrada | Imagen de salida | Imagen de entrada | Imagen de salida |
|---|---|---|---|
|
Obtener una vista frontal. |
|
Mirar hacia la izquierda. |
|
Obtener una vista trasera. |
|
Mirar hacia la derecha. |
Procesamiento de fotos antiguas
Capacidad | Imagen de entrada | Imagen de salida |
|---|---|---|
Restauración y colorización de fotos antiguas |
|
Restaure la foto antigua, elimine arañazos, reduzca el ruido, mejore los detalles, alta resolución, imagen realista, tono de piel natural, rasgos faciales claros, sin distorsión. |
|
Colorear inteligentemente la imagen basándose en su contenido para hacerla más vívida. |
Referencia de API
Consulte Edición de Qwen-Image para los parámetros de la API.
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: ¿Qué idiomas admite el modelo de edición de imágenes Qwen?
R: El modelo actualmente admite chino simplificado e inglés. Puede probar otros idiomas, pero no se garantiza el rendimiento.
P: ¿Cómo puedo ver las métricas de invocación del modelo?
R: Una hora después de que finalice la invocación de un modelo, vaya a la página de Monitoreo (Singapore) o Monitoreo (China (Pekín)) para ver métricas como el recuento de invocaciones y la tasa de éxito. Para obtener más información, consulte Facturación y gestión de costos.
P: ¿Cómo obtengo la lista blanca de nombres de dominio para el almacenamiento de imágenes?
R: Las imágenes generadas por los modelos se almacenan en OSS. La API devuelve una URL pública temporal. Para configurar una lista blanca de firewall para esta URL de descarga, tenga en cuenta lo siguiente: El almacenamiento subyacente puede cambiar dinámicamente. Este tema no proporciona una lista blanca fija de dominios de OSS para evitar problemas de acceso causados por información obsoleta. Si tiene requisitos de control de seguridad, póngase en contacto con su gestor de cuenta para obtener la lista más reciente de nombres de dominio de OSS.
Consulte las Preguntas frecuentes sobre generación de imágenes.





























































