O Qwen-Image-Edit aceita entrada e saída de múltiplas imagens. O modelo modifica textos em imagens, adiciona, exclui ou move objetos, altera ações do sujeito, transfere estilos e aprimora detalhes.
Primeiros passos
Este exemplo demonstra como usar o qwen-image-2.0-pro para gerar duas imagens editadas a partir de três imagens de entrada e um prompt.
Prompt de entrada: A garota da Imagem 1 veste o vestido preto da Imagem 2 e senta na pose da Imagem 3.
|
Imagem de entrada 1 |
Imagem de entrada 2 |
Imagem de entrada 3 |
Imagens de saída (múltiplas imagens) |
|
|
|
|
|
|
|
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 com o SDK, instale o DashScope SDK. O SDK está disponível para Python e Java.
Os modelos de edição de imagem Qwen aceitam de uma a três imagens de entrada. As séries qwen-image-2.0, qwen-image-edit-max e qwen-image-edit-plus geram de uma a seis imagens. Já o modelo qwen-image-edit gera apenas uma imagem. As URLs das imagens geradas são válidas por 24 horas. Baixe as imagens para o seu dispositivo local prontamente.
Python
import json
import os
import dashscope
from dashscope import MultiModalConversation
# The following is the URL for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# The model supports one to three input images.
messages = [
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/thtclx/input1.png"},
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/iclsnx/input2.png"},
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/gborgw/input3.png"},
{"text": "The girl from Image 1 is wearing the black dress from Image 2 and sitting in the pose from Image 3."}
]
}
]
# The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
# If you have not configured the environment variable, replace the next line with: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# The qwen-image-2.0, qwen-image-edit-max, and qwen-image-edit-plus series support one to six output images. This example generates two.
response = MultiModalConversation.call(
api_key=api_key,
model="qwen-image-2.0-pro",
messages=messages,
stream=False,
n=2,
watermark=False,
negative_prompt=" ",
prompt_extend=True,
size="1024*1536",
)
if response.status_code == 200:
# To view the full response, uncomment the next line.
# print(json.dumps(response, ensure_ascii=False))
for i, content in enumerate(response.output.choices[0].message.content):
print(f"URL of output image {i+1}: {content['image']}")
else:
print(f"HTTP status code: {response.status_code}")
print(f"Error code: {response.code}")
print(f"Error message: {response.message}")
print("For more information, see https://www.alibabacloud.com/help/en/model-studio/error-code")
Java
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.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
public class QwenImageEdit {
static {
// The following is the URL for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// The API keys for the Singapore and Beijing regions are different. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
// If you have not configured the environment variable, replace the following line with your DashScope API key: apiKey="sk-xxx".
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void call() throws ApiException, NoApiKeyException, UploadFileException, IOException {
MultiModalConversation conv = new MultiModalConversation();
// The model supports one to three input images.
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/thtclx/input1.png"),
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/iclsnx/input2.png"),
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/gborgw/input3.png"),
Collections.singletonMap("text", "The girl from Image 1 is wearing the black dress from Image 2 and sitting in the pose from Image 3.")
)).build();
// The qwen-image-2.0, qwen-image-edit-max, and qwen-image-edit-plus series models support one to six output images. This example generates two images.
Map<String, Object> parameters = new HashMap<>();
parameters.put("watermark", false);
parameters.put("negative_prompt", " ");
parameters.put("n", 2);
parameters.put("prompt_extend", true);
parameters.put("size", "1024*1536");
MultiModalConversationParam param = MultiModalConversationParam.builder()
.apiKey(apiKey)
.model("qwen-image-edit-max")
.messages(Collections.singletonList(userMessage))
.parameters(parameters)
.build();
MultiModalConversationResult result = conv.call(param);
// To view the complete response, uncomment the following line.
// System.out.println(JsonUtils.toJson(result));
List<Map<String, Object>> contentList = result.getOutput().getChoices().get(0).getMessage().getContent();
int imageIndex = 1;
for (Map<String, Object> content : contentList) {
if (content.containsKey("image")) {
System.out.println("URL of output image " + imageIndex + ": " + content.get("image"));
imageIndex++;
}
}
}
public static void main(String[] args) {
try {
call();
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
}
}
curl
O comando abaixo utiliza a URL da região Singapore. Se você usar um modelo na região China (Beijing), substitua a URL por: 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-2.0-pro",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/thtclx/input1.png"
},
{
"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/iclsnx/input2.png"
},
{
"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/gborgw/input3.png"
},
{
"text": "The girl from Image 1 is wearing the black dress from Image 2 and sitting in the pose from Image 3."
}
]
}
]
},
"parameters": {
"n": 2,
"negative_prompt": " ",
"prompt_extend": true,
"watermark": false,
"size": "1024*1536"
}
}'
Recomendações de modelos
Série qwen-image-2.0-pro (Recomendada): Modelo unificado para geração e edição de imagens, com capacidades aprimoradas em renderização de texto, texturas realistas e aderência semântica.
Série qwen-image-2.0: Versão acelerada do modelo unificado de geração e edição de imagens, que equilibra qualidade e desempenho.
Para consultar os modelos disponíveis em cada região, veja a Lista de modelos.
Instruções de entrada
Imagens de entrada (messages)
O parâmetro messages é um array que deve conter um único objeto. Esse objeto precisa incluir as propriedades role e content. Defina a propriedade role como user. A propriedade content deve incluir tanto image (de uma a três imagens) quanto text (uma instrução de edição).
As imagens de entrada devem atender aos seguintes requisitos:
-
Os formatos de imagem suportados são JPG, JPEG, PNG, BMP, TIFF, WEBP e GIF.
A imagem de saída está no formato PNG. Para GIFs animados, apenas o primeiro quadro é processado.
Para obter melhores resultados, a resolução da imagem deve estar entre 384 e 3072 pixels, tanto para largura quanto para altura. Uma resolução baixa pode resultar em uma saída borrada, enquanto uma resolução alta aumenta o tempo de processamento.
O tamanho de um único arquivo de imagem não pode 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'" }
]
}
]
Ordem de entrada das imagens
Os números das imagens nos prompts correspondem à posição no array: a primeira imagem é "imagem 1", a segunda é "imagem 2". Você também pode usar marcadores como "[imagem 1]" e "[imagem 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"}
]
}
|
Imagem de entrada |
Imagem de saída |
||
|
Imagem 1 |
Imagem 2 |
Prompt: Mover a imagem 1 sobre a imagem 2 |
Prompt: Mover a imagem 2 sobre a imagem 1 |
Métodos de entrada de imagem
URL pública
Forneça uma URL de imagem acessível publicamente que suporte o protocolo HTTP ou HTTPS.
Exemplo de valor:
https://xxxx/img.png.
Codificação Base64
Converta o arquivo de imagem para uma string codificada em Base64 e concatene-a no seguinte formato: data:{mime_type};base64,{base64_data}.
{mime_type}: Tipo de mídia da imagem, que deve corresponder ao formato do arquivo.{base64_data}: String codificada em Base64 do arquivo.Exemplo de valor:
data:image/jpeg;base64,GDU7MtCZz...(Exemplo truncado para fins de demonstração.)
Para exemplos completos de código, consulte Chamada com Python SDK e Chamada com Java SDK.
Mais parâmetros
Ajuste os resultados da geração usando os seguintes parâmetros opcionais:
n: Quantidade de imagens a gerar. O valor padrão é 1. As séries de modelos qwen-image-2.0, qwen-image-edit-max e qwen-image-edit-plus suportam a geração de uma a seis imagens. O modelo
qwen-image-editgera apenas uma imagem.negative_prompt: Descreve o conteúdo a excluir da imagem, como "desfoque" ou "dedos extras". Este parâmetro ajuda a otimizar a qualidade da imagem gerada.
-
watermark: Define se deve adicionar uma marca d'água "Qwen-Image" no canto inferior direito da imagem. O valor padrão é
false. A imagem a seguir mostra o estilo da marca d'água:
seed: Semente de número aleatório. O valor deve ser um inteiro entre
[0, 2147483647]. Se este parâmetro não for especificado, o algoritmo gera um número aleatório para usar como semente. Usar o mesmo valor de semente ajuda a garantir resultados de geração consistentes.
Os seguintes parâmetros opcionais estão disponíveis apenas para as séries de modelos qwen-image-2.0, qwen-image-edit-max e qwen-image-edit-plus:
size: Resolução da imagem de saída. O formato é
largura*altura, como"1024*2048". Para os modelos da série qwen-image-2.0, defina a largura e a altura livremente. O total de pixels da imagem de saída deve estar entre 512 × 512 e 2048 × 2048. Por padrão, a resolução é igual à da imagem de entrada (a última imagem, se várias forem fornecidas). Para os modelos das séries qwen-image-edit-max e qwen-image-edit-plus, a largura e a altura podem variar de 512 a 2048 pixels. Por padrão, a imagem de saída tem uma resolução próxima de1024*1024e uma proporção semelhante à da imagem original.prompt_extend: Ativa ou desativa o recurso de reescrita de prompt. O valor padrão é
true. Quando ativado, o modelo otimiza o prompt. Esse recurso melhora significativamente os resultados para prompts simples ou pouco descritivos.
Para obter uma lista completa de parâmetros, consulte a Referência da API Qwen-Image-Edit.
Visão geral
Fusão de múltiplas imagens
|
Imagem de entrada 1 |
Imagem de entrada 2 |
Imagem de entrada 3 |
Imagem de saída |
|
|
|
|
A garota da Imagem 1 usa o colar da Imagem 2 e carrega a bolsa da Imagem 3 no ombro esquerdo. |
Consistência do sujeito
|
Imagem de entrada |
Imagem de saída 1 |
Imagem de saída 2 |
Imagem de saída 3 |
|
|
Transforme a imagem em uma foto de identidade com fundo azul. A pessoa está vestindo camisa branca, terno preto e gravata listrada. |
A pessoa está vestindo camisa branca, terno cinza e gravata listrada. Uma mão repousa sobre a gravata. O fundo é claro. |
A pessoa veste um moletom preto com capuz estampado com "Qwen Image" em fonte de pincelada grossa. Ela está apoiada em um guarda-corpo com luz do sol nos cabelos. Uma ponte e o mar aparecem ao fundo. |
|
|
O ar-condicionado está posicionado em uma sala de estar ao lado de um sofá. |
Uma névoa sai da saída de ar do aparelho, estendendo-se sobre o sofá. Folhas verdes também foram adicionadas. |
O texto manuscrito branco "Natural Fresh Air Enjoy Breathing" foi adicionado na parte superior. |
Criação a partir de esboço
|
Imagem de entrada |
Imagem de saída |
|
|
|
Gere uma imagem que corresponda à forma detalhada delineada na Imagem 1 e siga esta descrição: Uma jovem sorri em um dia ensolarado. Ela usa óculos de sol redondos marrons com armação de oncinha. Seu cabelo está preso de forma elegante, ela usa brincos de pérola, um cachecol azul-escuro com estampas de estrelas roxas e uma jaqueta de couro preta. |
Gere uma imagem que corresponda à forma detalhada delineada na Imagem 1 e siga esta descrição: Um senhor idoso sorri para a câmera. Seu rosto é enrugado, seu cabelo está bagunçado pelo vento e ele usa óculos de leitura com armação redonda. Ele tem um cachecol vermelho desgastado com estampas de estrelas no pescoço e veste uma jaqueta acolchoada. |
Geração criativa de produtos
|
Imagem de entrada |
Imagem de saída |
||
|
|
Faça este urso sentar sob a lua (representada por um contorno crescente cinza claro sobre fundo branco), segurando um violão, com pequenas estrelas e balões de fala com frases como "Be Kind" flutuando ao redor. |
Estampe este design em uma camiseta e em uma sacola de papel. Uma modelo feminina exibe esses itens. A mulher também usa um boné de beisebol com os dizeres "Be kind". |
Um modelo de personagem hiper-realista em escala 1/7, projetado como produto comercial acabado, está sobre uma mesa com um iMac de teclado branco. O modelo fica sobre uma base acrílica transparente, redonda e limpa, sem rótulos ou textos. Iluminação profissional de estúdio destaca os detalhes esculpidos. Na tela do iMac ao fundo, o processo de modelagem no ZBrush para o mesmo modelo é exibido. Ao lado do modelo, coloque uma caixa de embalagem com janela transparente na frente, mostrando apenas a casca plástica transparente interna. A caixa é ligeiramente mais alta que o modelo e tem tamanho adequado para acomodá-lo. |
|
Este urso veste um traje de astronauta e aponta para a distância. |
Este urso veste um lindo vestido de baile, com os braços abertos em uma elegante pose de dança. |
Este urso veste roupas esportivas, segura uma bola de basquete e mantém uma perna dobrada. |
|
Gerar imagem a partir de mapa de profundidade
|
Imagem de entrada |
Imagem de saída |
|
|
|
Gere uma imagem que corresponda ao mapa de profundidade delineado na Imagem 1 e siga esta descrição: Uma bicicleta azul está estacionada em um beco lateral, com algumas ervas daninhas crescendo nas frestas das pedras ao fundo. |
Gere uma imagem que corresponda ao mapa de profundidade delineado na Imagem 1 e siga esta descrição: Uma bicicleta vermelha desgastada está estacionada em um caminho lamacento, com uma densa floresta primitiva ao fundo. |
Gerar imagem a partir de pontos-chave
|
Imagem de entrada |
Imagem de saída |
|
|
|
Gere uma imagem que corresponda à pose humana delineada na Imagem 1 e siga esta descrição: Uma mulher chinesa vestindo Hanfu segura um guarda-chuva de papel oleado sob a chuva, com um jardim de Suzhou ao fundo. |
Gere uma imagem que corresponda à pose humana delineada na Imagem 1 e siga esta descrição: Um jovem está em uma plataforma de metrô. Ele usa boné de beisebol, camiseta e jeans. Um trem passa rapidamente atrás dele. |
Edição de texto
|
Imagem de entrada |
Imagem de saída |
Imagem de entrada |
Imagem de saída |
|
|
Substitua 'HEALTH INSURANCE' nos blocos de Scrabble por 'Tomorrow Will Be Better'. |
|
Altere a frase "Take a Breather" no bilhete para "Relax and Recharge". |
|
Imagem de entrada |
Imagem de saída |
||
|
|
Altere "Qwen-Image" para uma fonte preta estilo tinta escorrendo. |
Altere "Qwen-Image" para uma fonte preta estilo manuscrito. |
Altere "Qwen-Image" para uma fonte preta pixelada. |
|
Altere "Qwen-Image" para vermelho. |
Altere "Qwen-Image" para um gradiente azul-roxo. |
Altere "Qwen-Image" para cores pastel vibrantes. |
|
|
Altere o material de "Qwen-Image" para metal. |
Altere o material de "Qwen-Image" para nuvens. |
Altere o material de "Qwen-Image" para vidro. |
|
Adicionar e excluir
|
Capacidade |
Imagem de entrada |
Imagem de saída |
|
Adicionar elemento |
|
Adicione uma pequena placa de madeira na frente do pinguim com os dizeres "Welcome to Penguin Beach". |
|
Excluir elemento |
|
Remova o fio de cabelo do prato. |
Transformação de ponto de vista
|
Imagem de entrada |
Imagem de saída |
Imagem de entrada |
Imagem de saída |
|
|
Obter visão frontal. |
|
Voltar para a esquerda. |
|
|
Obter visão traseira. |
|
Voltar para a direita. |
Processamento de fotos antigas
|
Capacidade |
Imagem de entrada |
Imagem de saída |
|
Restauração e colorização de fotos antigas |
|
Restaure a foto antiga, remova arranhões, reduza ruído, aprimore detalhes, alta resolução, imagem realista, tom de pele natural, traços faciais nítidos, sem distorção. |
|
|
Colorize inteligentemente a imagem com base em seu conteúdo para torná-la mais vívida. |
Faturamento e limitação de taxa
Consulte a Lista de modelos e preços para obter informações sobre cota gratuita, preços e limites de taxa.
Detalhes do faturamento:
O faturamento considera apenas as imagens geradas com sucesso. Chamadas com falha não geram cobrança nem consomem a cota gratuita.
Ative a opção 'Free quota only' para evitar cobranças após o esgotamento da cota. Consulte Cota gratuita para novos usuários.
Referência da API
Consulte a documentação do Qwen-Image Edit para verificar os parâmetros da API.
Códigos de erro
Se a chamada do modelo falhar e retornar uma mensagem de erro, consulte os Códigos de erro para resolver o problema.
FAQ
P: Quais idiomas o modelo de Edição de Imagem Qwen suporta?
R: Atualmente, o modelo suporta chinês simplificado e inglês. É possível testar outros idiomas, mas o desempenho não é garantido.
P: Como visualizo as métricas de invocação do modelo?
R: Uma hora após a conclusão da invocação do modelo, acesse a página de Monitoramento (Singapore) ou Monitoramento (China (Beijing)) para visualizar métricas como contagem de invocações e taxa de sucesso. Para mais informações, consulte Faturamento e gestão de custos.
P: Como obtenho a lista de permissões de nomes de domínio para armazenamento de imagens?
R: As imagens geradas pelos modelos ficam armazenadas no OSS. A API retorna uma URL pública temporária. Para configurar uma lista de permissões de firewall para esta URL de download, observe o seguinte: O armazenamento subjacente pode mudar dinamicamente. Este tópico não fornece uma lista fixa de domínios OSS permitidos para evitar problemas de acesso causados por informações desatualizadas. Se você tiver requisitos de controle de segurança, entre em contato com o gerente da sua conta para obter a lista mais recente de nomes de domínio do OSS.
Consulte também o FAQ sobre geração de imagens.


































































