Edição de imagem
Modifique imagens via texto
Primeiros passos
Este exemplo mostra como usar qwen-image-3.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 usa o vestido preto da Imagem 2 e senta na pose da Imagem 3.
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "20%", paddingBottom: "8px"}}>Imagem de entrada 1</th> <th style={{textAlign: "left", width: "22%", paddingBottom: "8px"}}>Imagem de entrada 2</th> <th style={{textAlign: "left", width: "20%", paddingBottom: "8px"}}>Imagem de entrada 3</th> <th style={{textAlign: "left", width: "20%", paddingBottom: "8px"}}>Imagens de saída (várias imagens)</th>
<th style={{textAlign: "left", width: "18%", paddingBottom: "8px"}} />
</tr>
</thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>

</td>
</tr>
</tbody> </table>
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.
O Qwen os modelos de edição de imagens suportam de uma a três imagens de entrada; qwen-image-2.1-pro suporta um a dez. O qwen-image-2.0/qwen-image-3.0 série e qwen-image-2.1-pro pode gerar de uma a seis imagens. Os URLs das imagens geradas são válidos por 24 horas. Baixe as imagens para o seu dispositivo local imediatamente.
Python
```python
import json
import os
import dashscope
from dashscope import MultiModalConversation
dashscope.base_http_api_url = 'https://maas.qwencloudapi.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": "Make the girl from Image 1 wear the black dress from Image 2 and sit in the pose from Image 3."}
]
}
]
# Replace with your API key if the environment variable is not set: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# qwen-image-2.0/3.0 series supports outputting 1 to 6 images. This example shows how to output 2 images.
response = MultiModalConversation.call(
api_key=api_key,
model="qwen-image-3.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 following 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 the documentation: https://docs.qwencloud.com/api-reference/preparation/error-messages")
```
Exemplo de resposta.
```json
{
"status_code": 200,
"request_id": "fa41f9f9-3cb6-434d-a95d-4ae6b9xxxxxx",
"code": "",
"message": "",
"output": {
"text": null,
"finish_reason": null,
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"image": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/xxx.png?Expires=xxx"
},
{
"image": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/xxx.png?Expires=xxx"
}
]
}
}
],
"audio": null
},
"usage": {
"output_height": 1536,
"output_width": 1024,
"input_image_count": 3,
"input_image_type": "qima_input_1k",
"output_image_count": 2,
"output_image_type": "qima_output_1k"
}
}
```
Java
```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 {
Constants.baseHttpApiUrl = "https://maas.qwencloudapi.com/api/v1";
}
// If you have not configured the environment variable, replace the following line with your 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", "Make the girl from Image 1 wear the black dress from Image 2 and sit in the pose from Image 3.")
)).build();
// qwen-image-2.0/3.0 series supports outputting 1 to 6 images. This example shows how to output 2 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-3.0-pro")
.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());
}
}
}
```
Resposta da amostra
```json
{
"requestId": "46281da9-9e02-941c-ac78-be88b8xxxxxx",
"usage": {
"output_height": 1536,
"output_width": 1024,
"input_image_count": 3,
"input_image_type": "qima_input_1k",
"output_image_count": 2,
"output_image_type": "qima_output_1k"
},
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
},
{
"image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
}
]
}
}
]
}
}
```
curl
```curl
curl --location 'https://maas.qwencloudapi.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://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": "Make the girl from Image 1 wear the black dress from Image 2 and sit in the pose from Image 3."
}
]
}
]
},
"parameters": {
"n": 2,
"negative_prompt": " ",
"prompt_extend": true,
"watermark": false,
"size": "1024*1536"
}
}'
```
Exemplo de resposta.
```json
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
},
{
"image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
}
]
}
}
]
},
"usage": {
"output_height": 1536,
"output_width": 1024,
"input_image_count": 3,
"input_image_type": "qima_input_1k",
"output_image_count": 2,
"output_image_type": "qima_output_1k"
},
"request_id": "bf37ca26-0abe-98e4-8065-xxxxxx"
}
```
Baixe as imagens para o seu dispositivo local.
Python
```python
import requests
def download_image(image_url, save_path='output.png'):
try:
response = requests.get(image_url, stream=True, timeout=300) # Set 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 downloaded successfully 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')
```
Java
```java
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 = "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx";
String savePath = "output.png";
downloadImage(imageUrl, savePath);
}
}
```
Instruções de entrada
Imagens de entrada (mensagens)
O messages parâmetro é uma matriz que deve conter um único objeto. Este objeto deve incluir o role e content propriedades. O role propriedade deve ser definida como user. O content a propriedade deve incluir ambos image (uma a três imagens, ou uma a dez para o qwen-image-2.1 series) e 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 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 desfocada, enquanto uma resolução alta aumenta o tempo de processamento.
-
A proporção (lado mais longo para lado mais curto) não deve exceder 10:1.
-
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 da imagem
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "27%", paddingBottom: "8px"}}>Imagem de entrada 1</th> <th style={{textAlign: "left", width: "20%", paddingBottom: "8px"}}>Imagem de entrada 2</th> <th style={{textAlign: "left", width: "27%", paddingBottom: "8px"}}>Imagem de saída</th>
<th style={{textAlign: "left", width: "27%", paddingBottom: "8px"}} />
</tr>
</thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>

Imagem 1
</td>
<td style={{verticalAlign: "top"}}>

Imagem 2
</td>
<td style={{verticalAlign: "top"}}>

Prompt: Mova a Imagem 1 para a Imagem 2
</td>
<td style={{verticalAlign: "top"}}>

Prompt: Mova a Imagem 2 para a Imagem 1
</td>
</tr>
</tbody> </table>
Métodos de entrada de imagem
URL público
- Você pode fornecer um URL de imagem acessível publicamente que suporte o protocolo HTTP ou HTTPS.
- Valor de exemplo:
https://xxxx/img.png.
Codificação Base64
Converta o arquivo de imagem em uma string codificada em Base64 e concatene-a no seguinte formato: data:<mime_type>;base64,<base64_data>.
<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.- Valor de exemplo:
data:image/jpeg;base64,GDU7MtCZz...(O exemplo está truncado para fins de demonstração.)
Mais parâmetros
Ajuste os resultados da geração usando os seguintes parâmetros opcionais:
-
n: O número de imagens a serem geradas. O valor padrão é 1. O qwen-image-2.0/3.0 série e qwen-image-2.1-pro os modelos suportam a geração de uma a seis imagens.
-
negative_prompt: Descreve o conteúdo a ser excluído da imagem, como "desfoque" ou "dedos extras". Este parâmetro ajuda a otimizar a qualidade da imagem gerada.
-
marca d'água: especifica se deseja adicionar um "Qwen-Image" marca d'água no canto inferior direito da imagem. O valor padrão é
false. -
seed: A semente do número aleatório. O valor deve ser um número inteiro de
[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 inicial ajuda a garantir resultados de geração consistentes.
Os seguintes parâmetros opcionais estão disponíveis apenas para o qwen-image-2.0/3.0 série e qwen-image-2.1-pro:
- tamanho: A resolução da imagem de saída. O formato é
width*height, como"1024*2048". Para o qwen-image-2.0/3.0 modelos de série e qwen-image-2.1-pro, você pode definir a largura e a altura livremente. O total de pixels da imagem de saída deve estar entre 512 x 512 e 2048 x 2048. Para o qwen-image-2.0 série, a resolução padrão é a mesma da imagem de entrada (a última imagem se forem fornecidas várias); para o qwen-image-3.0 série e qwen-image-2.1-pro, o modelo recomenda automaticamente uma resolução no prompt quando o tamanho é omitido. - prompt_extend: Ativa ou desativa o recurso de reescrita de prompt. O valor padrão é
true. Se ativado, o modelo otimiza o prompt. Este recurso pode melhorar significativamente os resultados para prompts simples ou menos descritivos. - prompt_extend_mode: O modo de reescrita do prompt. Apoiado pelo qwen-image-3.0 série e qwen-image-2.1-pro apenas. A edição de imagens suporta apenas o valor padrão
direct(aprimoramento imediato direto, DPE); passandoagentretorna um erro 400. - enable_thinking: ativa o modo de pensamento. Apoiado pelo qwen-image-3.0 série e qwen-image-2.1-pro apenas, para edição direta de imagens (não compatível com edição de imagens no modo de agente). Requer
prompt_extend=true. Aprimora o raciocínio do modelo para melhorar a qualidade da imagem, mas aumenta o tempo de geração. O valor padrão étrue.
Para obter uma lista completa de parâmetros, consulte Qwen-Image-Edit Referência da API.
Visão geral
Fusão de múltiplas imagens
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de entrada 1</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de entrada 2</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de entrada 3</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de saída</th> </tr> </thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>
 A menina da Imagem 1 usa o colar da Imagem 2 e carrega a bolsa da Imagem 3 no ombro esquerdo.
</td>
</tr>
</tbody> </table>
Consistência do assunto
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "33%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "33%", paddingBottom: "8px"}}>Imagem de saída 1</th> <th style={{textAlign: "left", width: "34%", paddingBottom: "8px"}}>Imagem de saída 2</th> </tr> </thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Mude a imagem para uma foto de identificação com fundo azul. A pessoa veste camisa branca, terno preto e gravata listrada.
</td>
<td style={{verticalAlign: "top"}}>
 A pessoa veste camisa branca, terno cinza e gravata listrada. Uma mão repousa sobre a gravata. O fundo é de cor clara.
</td>
</tr>
<tr>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>
 O ar condicionado é colocado em uma sala ao lado de um sofá.
</td>
<td style={{verticalAlign: "top"}}>
 A névoa é adicionada pela ventilação do ar condicionado, estendendo-se sobre o sofá. Folhas verdes também são adicionadas.
</td>
</tr>
</tbody> </table>
Criação de esboço
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "33%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "33%", paddingBottom: "8px"}}>Imagem de saída</th>
<th style={{textAlign: "left", width: "34%", paddingBottom: "8px"}} />
</tr>
</thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Gere uma imagem que corresponda à forma detalhada descrita na Imagem 1 e siga esta descrição: Uma jovem sorri em um dia ensolarado. Ela usa óculos escuros redondos marrons com armação com estampa de leopardo. Seu cabelo está bem preso, ela usa brincos de pérola, um lenço azul escuro com estrelas roxas e uma jaqueta de couro preta.
</td>
<td style={{verticalAlign: "top"}}>
 Gere uma imagem que corresponda ao formato detalhado descrito na Imagem 1 e siga esta descrição: Um homem idoso sorri para a câmera. Seu rosto está enrugado, seu cabelo está bagunçado pelo vento e ele usa óculos de leitura de armação redonda. Ele tem um lenço vermelho surrado com padrões de estrelas em volta do pescoço e está vestindo uma jaqueta acolchoada de algodão.
</td>
</tr>
</tbody> </table>
Geração criativa de produtos
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de saída</th>
<th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}} />
<th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}} />
</tr>
</thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Faça este urso sentar sob a lua (representado por um contorno crescente cinza claro em um fundo branco), segurando um violão, com pequenas estrelas e balões de fala com frases como "Be Kind" flutuando.
</td>
<td style={{verticalAlign: "top"}}>
 Imprima este desenho em uma camiseta e uma sacola de papel. Uma modelo feminina está exibindo esses itens. A mulher também está usando um boné de beisebol com a frase “Seja gentil”.
</td>
<td style={{verticalAlign: "top"}}>
 Um modelo de personagem hiper-realista em escala 1/7, projetado como um produto comercial acabado, é colocado sobre uma mesa com um iMac que possui um teclado branco. O modelo assenta sobre uma base acrílica limpa, redonda e transparente, sem etiquetas ou texto. A iluminação profissional do estúdio destaca os detalhes esculpidos. Na tela do iMac em segundo plano, é exibido o processo de modelagem do ZBrush para o mesmo modelo. Ao lado do modelo, coloque uma caixa de embalagem com janela transparente na frente, mostrando apenas o invólucro de plástico transparente em seu interior. A caixa é um pouco mais alta que o modelo e tem um tamanho razoável para segurá-la.
</td>
</tr>
<tr>
<td style={{verticalAlign: "top"}} />
<td style={{verticalAlign: "top"}}>
 Este urso está vestindo um traje de astronauta e apontando para longe.
</td>
<td style={{verticalAlign: "top"}}>
 Este urso está usando um lindo vestido de baile, com os braços abertos em uma elegante pose de dança.
</td>
<td style={{verticalAlign: "top"}}>
 Este urso está vestindo roupas esportivas, segurando uma bola de basquete e com uma perna dobrada.
</td>
</tr>
</tbody> </table>
Gerar imagem do mapa de profundidade
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "33%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "33%", paddingBottom: "8px"}}>Imagem de saída</th>
<th style={{textAlign: "left", width: "34%", paddingBottom: "8px"}} />
</tr>
</thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Gere uma imagem que corresponda ao mapa de profundidade descrito na Imagem 1 e siga esta descrição: Uma bicicleta azul está estacionada em um beco lateral, com algumas ervas daninhas crescendo em rachaduras na pedra ao fundo.
</td>
<td style={{verticalAlign: "top"}}>
 Gere uma imagem que corresponda ao mapa de profundidade descrito 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.
</td>
</tr>
</tbody> </table>
Gere imagem a partir de pontos-chave
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "33%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "33%", paddingBottom: "8px"}}>Imagem de saída</th>
<th style={{textAlign: "left", width: "34%", paddingBottom: "8px"}} />
</tr>
</thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Gere uma imagem que corresponda à pose humana delineada na Imagem 1 e siga esta descrição: Uma mulher chinesa em um Hanfu segura um guarda-chuva de papel oleado na chuva, com um jardim de Suzhou ao fundo.
</td>
<td style={{verticalAlign: "top"}}>
 Gere uma imagem que corresponda à pose humana delineada na Imagem 1 e siga esta descrição: Um jovem está na plataforma do metrô. Ele usa um boné de beisebol, uma camiseta e jeans. Um trem passa em alta velocidade atrás dele.
</td>
</tr>
</tbody> </table>
Edição de texto
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "35%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "35%", paddingBottom: "8px"}}>Imagem de saída</th> <th style={{textAlign: "left", width: "15%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "15%", paddingBottom: "8px"}}>Imagem de saída</th> </tr> </thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Substitua 'SEGURO DE SAÚDE' nas peças do Scrabble por '**Amanhã será melhor**'.
</td>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>
 Mude a frase "Respire" na nota para "**Relaxe e recarregue**".
</td>
</tr>
</tbody> </table>
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de saída</th>
<th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}} />
<th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}} />
</tr>
</thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Mudar "Qwen-Image" para uma fonte de tinta preta.
</td>
<td style={{verticalAlign: "top"}}>
 Mudar "Qwen-Image" para uma fonte manuscrita em preto.
</td>
<td style={{verticalAlign: "top"}}>
 Mudar "Qwen-Image" para uma fonte de pixel preto.
</td>
</tr>
<tr>
<td style={{verticalAlign: "top"}} />
<td style={{verticalAlign: "top"}}>
 Mudar "Qwen-Image"para vermelho.
</td>
<td style={{verticalAlign: "top"}}>
 Mudar "Qwen-Image"para um gradiente azul-roxo.
</td>
<td style={{verticalAlign: "top"}}>
 Mudar "Qwen-Image"para cores doces.
</td>
</tr>
<tr>
<td style={{verticalAlign: "top"}} />
<td style={{verticalAlign: "top"}}>
 Altere o material de "Qwen-Image"para metal.
</td>
<td style={{verticalAlign: "top"}}>
 Altere o material de "Qwen-Image"para as nuvens.
</td>
<td style={{verticalAlign: "top"}}>
 Altere o material de "Qwen-Image"para o vidro.
</td>
</tr>
</tbody> </table>
Adicionar, excluir, substituir e modificar
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de saída</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de saída</th> </tr> </thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Adicione uma pequena placa de madeira na frente do pinguim que diz "Bem-vindo à Praia dos Pinguins".
</td>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>
 Remova o cabelo da placa.
</td>
</tr>
</tbody> </table>
Transformação de ponto de vista
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de saída</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "25%", paddingBottom: "8px"}}>Imagem de saída</th> </tr> </thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Obtenha uma visão frontal.
</td>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>
 Rosto para a esquerda.
</td>
</tr>
<tr>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>
 Obtenha uma visão traseira.
</td>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>
 Vire para a direita.
</td>
</tr>
</tbody> </table>
Processamento de fotos antigas
<table style={{width: "100%", borderCollapse: "separate", borderSpacing: "8px 0", tableLayout: "fixed"}}> <thead> <tr> <th style={{textAlign: "left", width: "50%", paddingBottom: "8px"}}>Imagem de entrada</th> <th style={{textAlign: "left", width: "50%", paddingBottom: "8px"}}>Imagem de saída</th> </tr> </thead>
<tbody>
<tr>
<td style={{verticalAlign: "top"}}>
</td>
<td style={{verticalAlign: "top"}}>
 Restaure a foto antiga, remova arranhões, reduza o ruído, aprimore detalhes, alta resolução, imagem realista, tom de pele natural, características faciais nítidas, sem distorção.
</td>
</tr>
<tr>
<td style={{verticalAlign: "top"}}>

</td>
<td style={{verticalAlign: "top"}}>
 Colora a imagem de forma inteligente com base em seu conteúdo para torná-la mais vívida.
</td>
</tr>
</tbody> </table>
Limites de faturamento e taxas
Para cota gratuita e preços, consulte preços.
Para limites de taxas, consulte Limites de taxas.
Detalhes de cobrança:
- A cobrança é baseada no número de imagens geradas com sucesso. Chamadas de modelo com falha ou erros de processamento não geram taxas nem consomem a cota gratuita.
- Você pode ativar o recurso 'Apenas cota gratuita' para evitar cobranças extras depois que sua cota gratuita acabar. Para obter mais informações, consulte Cota gratuita para novos usuários.
Referência de API
Para os parâmetros de entrada e saída da API, consulte Qwen - edição de imagem.
Códigos de erro
Se uma chamada falhar, consulte Mensagens de erro.
Perguntas frequentes
P: Quais idiomas o Qwen suporte para modelos de edição de imagem?
Eles oferecem suporte oficial para chinês simplificado e inglês. Outros idiomas podem funcionar, mas os resultados não são garantidos.
P: Como posso visualizar as métricas de invocação de modelo?
Uma hora após a conclusão de uma invocação de modelo, vá para o Analytics para visualizar métricas como contagem de invocações e taxa de sucesso. Para obter mais informações, consulte Faturamento e gerenciamento de custos.
P: Como posso obter a lista de permissões de nomes de domínio para armazenamento de imagens?
As imagens geradas pelos modelos são armazenadas no OSS. A API retorna um URL público temporário. Para configurar uma lista de permissões de firewall para este URL de download, observe o seguinte: O armazenamento subjacente pode mudar dinamicamente. Este tópico não fornece uma lista de permissões fixa de nomes de domínio OSS para evitar problemas de acesso causados por informações desatualizadas. Se você tiver requisitos de controle de segurança, entre em contato com seu gerente de conta para obter a lista mais recente de nomes de domínio OSS.
Para obter mais informações, consulte Perguntas frequentes sobre imagens e vídeos.