

# Gerar imagens com o Amazon Nova Canvas
<a name="image-generation"></a>

Com o modelo Amazon Nova Canvas, você pode gerar imagens realistas com qualidade de estúdio usando prompts de texto. Você pode usar o Amazon Nova Canvas para aplicações de conversão de texto em imagem e edição de imagens.

O Amazon Nova Canvas é compatível com os seguintes recursos:
+ Geração de texto para imagem (T2I): insira um prompt de texto e gere uma nova imagem como saída. A imagem gerada captura os conceitos descritos pelo prompt de texto.
+ Condicionamento de imagem: usa uma imagem de referência de entrada para orientar a geração de imagens. O modelo gera uma imagem de saída que se alinha ao layout e a composição da imagem de referência, ao mesmo tempo em que segue o prompt textual.
+ Conteúdo orientado por cores: você pode fornecer uma lista de códigos hexadecimais de cores com um prompt. Podem ser fornecidos entre um a dez códigos hexadecimais. A imagem retornada vai incorporar a paleta de cores fornecida pelo usuário.
+ Variação de imagem: usa de uma a cinco imagens e um prompt opcional como entrada. Ele gera uma nova imagem que adota características das imagens de referência, incluindo estilo, paleta de cores e assunto.
+ Inpainting: usa uma imagem e uma máscara de segmentação como entrada (seja do usuário ou estimada pelo modelo) e reconstrói a região definida pela máscara. Use a técnica de inpainting para substituir os pixels mascarados pelo novo conteúdo gerado.
+ Pintura externa: usa uma imagem e uma máscara de segmentação como entrada (seja do usuário ou estimada pelo modelo) e gera novo conteúdo que amplia perfeitamente a região mascarada, substituindo efetivamente o plano de fundo da imagem.
+ Remoção do plano de fundo: identifica automaticamente vários objetos na imagem de entrada e remove o plano de fundo. A imagem de saída tem um plano de fundo transparente.
+ Consistência do assunto: para alcançar a consistência do assunto, é necessário ajustar o modelo com imagens de referência para preservar o assunto escolhido (por exemplo, animal de estimação, sapato ou bolsa) em imagens geradas.
+ Proveniência de conteúdo: use ferramentas disponíveis ao público, como o [Content Credentials Verify](https://contentcredentials.org/verify) para verificar se uma imagem foi gerada pelo Amazon Nova Canvas. Isso deve indicar que a imagem foi gerada, a menos que os metadados tenham sido removidos.
+ Marca d’água: adiciona uma marca d’água invisível a todas as imagens geradas para reduzir a disseminação de desinformação, auxiliar na proteção de direitos autorais e rastrear o uso do conteúdo. A detecção de marca d’água está disponível para ajudar você a confirmar se uma imagem foi gerada por um modelo do Amazon Nova, que verifica a existência dessa marca d’água.


|  | Amazon Nova Canvas | 
| --- |--- |
| ID do modelo | amazon.nova-canvas-v1:0 | 
| Modalidades de entrada | Texto, imagem | 
| Modalidades de saída | Imagem | 
| Tamanho máximo do prompt | 1024 caracteres | 
| Resolução máxima de saída (tarefas de geração) | 4,19 milhões de pixels (ou seja, 2048 x 2048, 2816 x 1536) | 
| Resolução máxima de saída (tarefas de edição) | Deve atender a todos os itens abaixo:   4096 pixels no seu lado mais longo   Taxa de proporção entre 1:4 e 4:1   Contagem total de pixels de 4,19 milhões ou menor    | 
| Tipos de imagens de entrada compatíveis | PNG, JPEG | 
| Idiomas compatíveis | Inglês | 
| Regiões | Leste dos EUA (Norte da Virgínia), Europa (Irlanda), Ásia-Pacífico (Tóquio) | 
| API para invocar modelo | Sim | 
| Ajustar | Sim | 
| Throughput provisionado | Não | 

**Topics**
+ [Geração e edição de imagens](image-gen-access.md)
+ [Prova virtual](image-gen-vto.md)
+ [Estilos visuais](image-gen-styles.md)
+ [Estrutura de solicitação e resposta para geração de imagens](image-gen-req-resp-structure.md)
+ [Tratamento de erros](image-gen-errors.md)
+ [Exemplos de código](image-gen-code-examples.md)

# Geração e edição de imagens
<a name="image-gen-access"></a>

O Amazon Nova Canvas está disponível por meio da [API InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) do Bedrock e aceita os parâmetros de inferência e respostas de modelo a seguir ao realizar uma inferência do modelo.

**Topics**
+ [Formato de solicitação e resposta da geração de imagens](#image-gen-req-resp-format)
+ [Imagens de entrada para geração de imagens](#image-gen-input-images)
+ [Mascarar imagens](#image-gen-masking)
+ [Resoluções de imagem compatíveis](#image-gen-resolutions)

## Formato de solicitação e resposta da geração de imagens
<a name="image-gen-req-resp-format"></a>

Ao fazer uma chamada de [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) usando o modelo Amazon Nova Canvas, substitua o campo `body` da solicitação pelo formato correspondente ao caso de uso. Todas as tarefas compartilham um objeto `imageGenerationConfig`, mas cada tarefa tem um objeto de parâmetros específico da tarefa. Os casos de uso a seguir são compatíveis: 


| Valor do tipo da tarefa | Campo de parâmetro da tarefa | Categoria da tarefa | Descrição | 
| --- | --- | --- | --- | 
| TEXT\$1IMAGE somente com texto | textToImageParams | Geração | Gere uma imagem usando um prompt de texto. | 
| TEXT\$1IMAGE com condicionamento de imagem | textToImageParams | Geração | Forneça uma imagem de condicionamento de entrada junto com um prompt de texto para gerar uma imagem que siga o layout e a composição da imagem de condicionamento. | 
| COLOR\$1GUIDED\$1GENERATION | colorGuidedGenerationParams | Geração | Forneça uma lista de valores de cores em formato hexadecimal (por exemplo, \$1FF9800) junto com um prompt de texto e uma imagem de referência opcional para gerar uma imagem que siga a paleta de cores especificada. | 
| IMAGE\$1VARIATION | imageVariationParams | Geração | Forneça uma ou mais imagens de entrada, com ou sem um prompt de texto, para influenciar a imagem gerada. É possível usar esse recurso para influenciar o estilo visual da imagem gerada (quando usado com um prompt de texto), para gerar variações de uma única imagem (quando usado sem um prompt de texto) e para outros efeitos criativos e de controle. | 
| INPAINTING | inPaintingParams | Como editar | Modifique uma imagem alterando a área dentro de uma região mascarada. É possível usar esse recurso para adicionar, remover ou substituir elementos de uma imagem. | 
| OUTPAINTING | outPaintingParams | Como editar | Modifique uma imagem alterando a área fora de uma região mascarada. É possível usar esse recurso para substituir o plano de fundo atrás de um assunto. | 
| BACKGROUND\$1REMOVAL | backgroundRemovalParams | Como editar | Remova automaticamente o plano de fundo de qualquer imagem, substituindo o plano de fundo por pixels transparentes. Esse recurso pode ser útil quando você quiser compor a imagem posteriormente com outros elementos em uma aplicação de edição de imagens, apresentação ou site. Também é possível alterar facilmente o plano de fundo para uma cor sólida usando um código personalizado. | 
| VIRTUAL\$1TRY\$1ON | virtualTryOnParams | Como editar | Forneça uma imagem de origem e uma imagem de referência, sobrepondo um objeto da imagem de referência sobre a imagem de origem. Esse recurso pode ser usado para visualizar roupas e acessórios em diferentes modelos ou poses, alterar o estilo e a aparência de um objeto ou artigo de roupa ou transferir estilos e designs de um objeto para outro.  | 

## Imagens de entrada para geração de imagens
<a name="image-gen-input-images"></a>

Muitos tipos de tarefas exigem que uma ou mais imagens de entrada sejam incluídas na solicitação. Qualquer imagem usada na solicitação deve ser codificada como uma string Base64. Geralmente, as imagens podem estar no formato PNG ou JPEG e devem ter 8 bits por canal de cor (RGB). As imagens PNG podem conter um canal alfa adicional, mas esse canal não deve conter pixels transparentes ou translúcidos. Para obter detalhes específicos sobre as dimensões de imagem de entrada compatíveis, consulte [Resoluções de imagem compatíveis](#image-gen-resolutions).

Uma *imagem com máscara* é uma imagem que indica a área onde aplicar o recurso de inpainting ou outpainting. Essa imagem pode conter somente pixels em preto puro e branco puro.

Para solicitações de inpainting, a área colorida em preto é denominada *a máscara* e será alterada. O restante da imagem com máscara deve conter apenas pixels brancos puros. Pixels brancos puros indicam a área fora da máscara.

Para solicitações de outpainting, a área colorida em branco será alterada pelo modelo.

As imagens com máscara não devem conter pixels que não sejam preto puro ou branco puro. Se você estiver usando uma imagem JPEG como máscara, ela deverá ser compactada com 100% de qualidade para evitar a introdução de pixels não brancos ou não pretos durante a compactação.

Para exemplos de como codificar ou decodificar uma imagem de ou para uma string Base64, consulte [os exemplos de código](https://docs.aws.amazon.com/nova/latest/userguide/image-gen-code-examples.html).

## Mascarar imagens
<a name="image-gen-masking"></a>

Quando você está editando uma imagem, uma máscara é uma forma de definir as regiões a serem editadas. Você pode definir uma máscara usando uma de três opções:
+ `maskPrompt`: escreva um prompt de texto em linguagem natural para descrever as partes da imagem a serem mascaradas.
+ `maskImage`: uma imagem em preto e branco em que os pixels pretos puros indicam a área dentro da máscara e os pixels brancos puros indicam a área fora da máscara.

  Para uma solicitação de inpainting, os pixels pretos serão alterados pelo modelo. Para solicitações de outpainting, os pixels brancos serão alterados.
+ `garmentBasedMask`: uma máscara baseada em imagem que define uma região a ser substituída junto com algumas opções de estilo limitadas.

Você pode usar uma ferramenta de edição de fotos para desenhar máscaras ou criá-las com seu próprio código personalizado. Do contrário, use o campo maskPrompt para permitir que o modelo infira a máscara.

## Resoluções de imagem compatíveis
<a name="image-gen-resolutions"></a>

Você pode especificar qualquer resolução de saída para uma tarefa de geração, desde que ela atenda aos seguintes requisitos:
+ Cada lado deve ter entre 320 e 4096 pixels, inclusive.
+ Cada lado deve ser divisível igualmente por 16.
+ A taxa de proporção deve estar entre 1:4 e 4:1. Ou seja, um lado não pode ser mais de quatro vezes maior que o outro lado.
+ A contagem total de pixels deve ser menor que 4.194.304.

A maioria dessas mesmas restrições também se aplica às imagens de entrada. No entanto, os lados das imagens não precisam ser divisíveis igualmente por 16.

# Prova virtual
<a name="image-gen-vto"></a>

A *prova virtual* é um caso de uso de inpainting guiada por imagem, no qual o conteúdo de uma imagem de referência é sobreposto sobre uma imagem de origem com base na orientação de uma imagem de máscara. O Amazon Nova Canvas foi ajustado para trajes, acessórios, móveis e objetos relacionados. O modelo também tem uma boa generalização para outros casos, como a inclusão de um logotipo ou texto em uma imagem. 

Você pode gerar até cinco imagens com a API de prova virtual. Por padrão, somente uma imagem é gerada.

Para realizar uma prova virtual, você precisa fornecer três imagens:
+ *Imagem de origem*: a imagem original que você deseja modificar. Por exemplo, pode ser uma imagem de uma pessoa ou uma cena de uma sala.
+ *Imagem de referência*: a imagem que contém o item, objeto ou artigo que você deseja sobrepor à imagem de origem. Por exemplo, a imagem pode conter uma jaqueta, uma tigela ou um sofá. Para trajes, a imagem de referência pode conter roupas sobre ou fora de um corpo e pode conter vários produtos que representem componentes distintos do traje (como camisas, calças e sapatos em uma única imagem).
+ *Imagem de máscara*: a imagem que define qual parte da imagem de origem você deseja modificar. Uma imagem de máscara é uma imagem em preto e branco usada para definir qual parte da imagem de origem deve ser modificada. Pixels pretos indicam a área da imagem de origem a ser modificada, enquanto pixels brancos indicam áreas da imagem a serem preservadas. É possível fornecer sua própria imagem de máscara ou deixar que o modelo crie uma para você com base em outros parâmetros de entrada indicados por você.

  A imagem da máscara pode ser retornada como parte da saída, se especificada.

Veja alguns exemplos de como o modelo funciona.

------
#### [ Upper body clothing ]

As imagens a seguir mostram um exemplo de como o Amazon Nova sobrepõe uma peça de roupa da parte superior do corpo sobre um modelo.


| Imagem de origem | Imagem de referência | Output | 
| --- |--- |--- |
|  ![\[Um homem usando óculos escuros, olhando para a esquerda, vestindo uma camisa azul.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/vto1_source.jpg)  |  ![\[Uma camisa de botões rosa-avermelhada.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/vto1_ref.jpg)  |  ![\[Um homem usando óculos escuros, olhando para a esquerda, vestindo uma camisa de botões rosa-avermelhada.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/vto1_output.png)  | 

------
#### [ Couch in a room ]

As imagens a seguir mostram um exemplo de como a Amazon Nova sobrepõe um sofá em uma sala de móveis.


| Imagem de origem | Imagem de referência | Output | 
| --- |--- |--- |
|  ![\[Um sofá cinza moderno da metade do século passado em uma sala cercado por outras decorações.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/vto2_source.jpg)  |  ![\[Um sofá laranja contra um fundo branco.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/vto2_ref.jpg)  |  ![\[Um sofá laranja em uma sala cercado por outras decorações.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/vto2_output.png)  | 

------

Diferentemente de outros tipos de tarefas do Amazon Nova Canvas, a prova virtual não é compatível com um prompt de texto ou um prompt de texto negativo.

## Definindo a imagem de máscara
<a name="image-gen-vto-mask"></a>

Você pode fornecer diretamente uma imagem de máscara especificando `maskType: "IMAGE"` ou permitir que o modelo calcule a imagem automaticamente usando entradas auxiliares, como `maskType: "GARMENT"` ou `maskType: "PROMPT"`.

Quando houver a especificação de um tipo de máscara `"GARMENT"`, o Amazon Nova Canvas criará uma máscara que reconhece trajes com base em um valor de parâmetro de entrada `garmentClass` que você especifica. Na maioria dos casos, você pode usar uma das seguintes classes de traje de alto nível:
+ `"UPPER_BODY"`: cria uma máscara que inclui o comprimento total do braço.
+ `"LOWER_BODY"`: cria uma máscara que inclui o comprimento total da perna sem espaço entre as pernas.
+ `"FOOTWEAR"`: cria uma máscara que se ajusta ao perfil do sapato demonstrado na imagem de origem.
+ `"FULL_BODY"`: cria uma máscara equivalente à combinação de `"UPPER_BODY"` e `"LOWER_BODY"`.

Você pode usar o tipo de máscara `"PROMPT"` para descrever em linguagem natural o item na imagem de origem que deseja substituir. Isso é útil para cenários que não envolvam trajes. Esse recurso utiliza a mesma funcionalidade de mascaramento automático que existe no tipo de tarefa `"INPAINTING"` por meio do parâmetro `maskPrompt`.

**Atenção**  
As máscaras criadas com o tipo de máscara `"PROMPT"` terão adesão firme ao formato do item que você descreve. Isso pode ser problemático em muitos cenários, pois talvez o produto que você está adicionando não tenha a mesma silhueta ou tamanho do item que você está substituindo. Por esse motivo, a API de prova virtual também fornece um parâmetro opcional `maskShape` que pode ser definido como `"BOUNDING_BOX"`. Recomendamos usar essa configuração (que é a padrão) na maioria dos casos ao usar o tipo de máscara `"PROMPT"`.

## Gerar novas poses, mãos ou rostos
<a name="image-gen-vto-exclusions"></a>

Você pode instruir o modelo a manter ou refazer a geração da pose, das mãos ou do rosto da pessoa na imagem de origem. Quando você opta por manter esses elementos, eles são automaticamente removidos da imagem da máscara, independentemente de qual `maskType` você tenha escolhido.

Talvez você queira preservar a pose, as mãos ou o rosto nas seguintes situações:
+ Você está desenvolvendo uma aplicação que permite que os usuários finais desenhem suas próprias máscaras. A preservação desses recursos evita que os usuários finais incluam acidentalmente as mãos ou o rosto na máscara.
+ Você está usando `maskShape: BOUNDING_BOX`, mas não quer gerar novas mãos ou rosto. Com `preserveFace: ON` ou `preserveHands: ON`, esses recursos são removidos automaticamente da máscara.
+ Você está usando `maskType:GARMENT` e `maskShape: BOUNDING_BOX` com um modelo que não está em uma postura ereta. Nesse caso, a máscara da caixa delimitadora pode se sobrepor ao rosto e recomendamos usar `preserveFace: ON`. 

Por outro lado, talvez você queira refazer a geração da pose, das mãos ou do rosto nas seguintes situações:
+ Para trajes que cobrem o pescoço, `preserveFace: ON` pode excluir um pedaço suficiente do pescoço para ter um impacto negativo na saída.
+ Quando a modelo estiver usando sapatos de salto alto e a imagem de referência for de sapatos de salto baixo, ou vice-versa. Nesse caso, preservar a postura corporal criará resultados com aparência não natural.
+ Semelhante ao ponto anterior, ao provar bolsas ou outros acessórios, a geração de novas poses ou mãos pode gerar resultados com aparência mais natural.

## Dicas de estilo
<a name="image-gen-vto-styling"></a>

O parâmetro `garmentStyling` permite preservar ou alterar dicas específicas de estilo de traje que você poderia encontrar em uma sessão de fotos. Por exemplo, o Amazon Nova Canvas pode modificar o estilo de uma camisa para que suas mangas fiquem dobradas para cima ou para baixo ou pode modificar a camisa para que fique dentro ou fora da calça. As seguintes opções estão disponíveis:
+ `"longSleeveStyle"`: controla se as mangas de uma camisa de manga comprida estão dobradas para cima ou para baixo.
  + `"SLEEVE_DOWN"`: pode ser aplicado quando a imagem de origem estiver usando uma camisa de manga comprida (mangas para cima ou para baixo), camisa de manga curta ou camisa sem manga.
  + `"SLEEVE_UP"`: pode ser aplicado quando a imagem de origem estiver usando uma camisa de manga comprida com as mangas para cima, camisa de manga curta ou camisa sem manga.
+ `"tuckingStyle"`: controla se um traje da parte superior do corpo aparece por dentro ou por fora da calça.
  + `"UNTUCKED"`: pode ser aplicado independentemente de a imagem de origem ter a camisa dentro ou fora da calça.
  + `"TUCKED"`: pode ser aplicado quando a imagem de origem estiver com a camisa dentro da calça.
+ `"outerLayerStyle"`: controla se um traje da parte superior do corpo é estilizada como aberta ou fechada. O padrão é `"CLOSED"`, que é apropriado para a maioria das roupas (como camisas e suéteres). Para trajes externas, como jaquetas, definir esse valor para `"OPEN"` garante que o traje original da parte superior do corpo da imagem de origem seja mantido com o novo traje externo sobreposto sobre ele. Usar um valor de `"CLOSED"` com um traje externo nem sempre faz com que o traje fique fechado. Isso ocorre porque um valor de `"CLOSED"` garante apenas que todos os trajes da parte superior do corpo na imagem de origem serão substituídos e, ocasionalmente, pode resultar em uma camada externa aberta com uma nova camada inferior visível abaixo.
  + `"CLOSED"`
  + `"OPEN"`

Para obter mais informações, consulte os parâmetros `garmentStyling` em [Estrutura de solicitação e resposta para geração de imagens](image-gen-req-resp-structure.md).

## Costura de imagens
<a name="image-gen-vto-stitching"></a>

A prova virtual permite que você determine como as imagens são costuradas para criar a imagem final. Você pode escolher entre `"BALANCED"`, `"SEAMLESS"` e `"DETAILED"`. Cada estilo de mesclagem adota uma abordagem diferente na forma de costurar os elementos para criar a imagem final, cada um com seus benefícios e desvantagens.
+ `"BALANCED"`: protege todos os pixels não mascarados na imagem original, garantindo que eles permaneçam 100% precisos em relação à imagem original. Em alguns casos, haverá uma leve incompatibilidade perceptível de cor ou textura na imagem de saída que se apresenta como uma espécie de imagem “fantasma” do formato da máscara. É mais provável que isso ocorra quando a imagem mostrar uma pessoa em pé contra um fundo de cor sólida ou com textura uniforme. Para evitar isso, você poderá usar o estilo de mesclagem `"SEAMLESS"` como alternativa.
+ `"SEAMLESS"`: garante que nunca haja uma costura perceptível entre as áreas das imagens mascaradas e não mascaradas na imagem final. A desvantagem é que todos os pixels na imagem mudam um pouco e, ocasionalmente, os detalhes refinados são reduzidos nas áreas não mascaradas da imagem.
+ `"DETAILED"`: pode melhorar muito detalhes refinados, como logotipos e texto, especialmente quando a área mascarada for relativamente pequena em comparação com a imagem geral. O modelo consegue isso realizando inpainting em uma versão bem recortada e de alta resolução da imagem original, que inclui apenas a área mascarada. Em seguida, ele mescla o resultado de volta com a imagem original. Assim como no uso do modo `"BALANCED"`, ocasionalmente esse modo pode resultar em uma costura visível.

# Estilos visuais
<a name="image-gen-styles"></a>

O Amazon Nova Canvas permite que você gere imagens em diversos estilos predefinidos. Com o tipo de tarefa `"TEXT_TO_IMAGE"`, use o parâmetro `style` para escolher um estilo visual predefinido. Escolha entre os seguintes estilos disponíveis:
+ `"3D_ANIMATED_FAMILY_FILM"`: um estilo que faz alusão a filmes animados em 3D. Apresentando renderização realista e personagens com características físicas caricaturais ou exageradas. Esse estilo é capaz de produzir imagens focadas em personagens, imagens focadas em objetos ou adereços e imagens focadas no ambiente ou no cenário de interiores e exteriores.
+ `"DESIGN_SKETCH"`: um estilo com arte de linha desenhada à mão sem muita limpeza ou preenchimento e que não é muito refinado. Esse estilo é usado para transmitir conceitos e ideias. É um estilo útil para esboços de moda e design de produtos, bem como esboços arquitetônicos.
+ `"FLAT_VECTOR_ILLUSTRATION"`: um estilo de ilustração em cores planas que é popular nas comunicações comerciais. Também é útil para imagens de ícones e clip-arts.
+ `"GRAPHIC_NOVEL_ILLUSTRATION"`: um estilo de ilustração com tinta chamativa. Os personagens não têm características exageradas, como acontece com alguns outros estilos mais caricaturais.
+ `"MAXIMALISM"`: brilhante, elaborado, ousado e complexo, com formas fortes e detalhes ricos. É possível aplicar esse estilo a diversos assuntos, como ilustrações, fotografia, design de interiores, design gráfico ou design de embalagem.
+ `"MIDCENTURY_RETRO"`: remete às tendências do design gráfico das décadas de 1940 a 1960.
+ `"PHOTOREALISM"`: estilo fotográfico realista, incluindo diferentes repertórios, como fotografia de estoque, fotografia editorial, fotografia jornalística e muito mais. Esse estilo mostra iluminação realista, profundidade de campo e composição adequada ao repertório. Os assuntos mais comuns são humanos, mas também podem incluir animais, paisagens e outras características naturais.
+ `"SOFT_DIGITAL_PAINTING"`: esse estilo tem mais acabamento e refinamento do que um esboço. Ele inclui sombreamento, tridimensionalidade e textura que podem faltar em outros estilos.

**nota**  
O Amazon Nova Canvas não se limita aos estilos dessa lista. Você pode obter vários outros estilos visuais omitindo o parâmetro `style` e descrevendo o estilo desejado em seu prompt. Opcionalmente, você pode usar o parâmetro `negativeText` para afastar ainda mais as características do estilo das características indesejadas.

As imagens a seguir exibem a mesma imagem gerada em cada um dos estilos descritos anteriormente.

## Filme para famílias animado em 3D
<a name="styles-collapsable1"></a>

![\[A imagem mostra um elefante no estilo de filme para famílias animado em 3D.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/3D_ANIMATED_FAMILY_FILM.png)


## Esboço de design
<a name="styles-collapsable2"></a>

![\[A imagem retrata um elefante no estilo de esboço de design.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/DESIGN_SKETCH.png)


## Ilustração vetorial plana
<a name="styles-collapsable3"></a>

![\[A imagem retrata um elefante no estilo de ilustração vetorial plana.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/FLAT_VECTOR_ILLUSTRATION.png)


## Ilustração de novela gráfica
<a name="styles-collapsable4"></a>

![\[A imagem retrata um elefante no estilo de ilustração de novela gráfica.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/GRAPHIC_NOVEL_ILLUSTRATION.png)


## Maximalismo
<a name="styles-collapsable5"></a>

![\[A imagem retrata um elefante no estilo maximalista.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/MAXIMALISM.png)


## Retrô de meados do século passado
<a name="styles-collapsable6"></a>

![\[A imagem retrata um elefante no estilo retrô de meados do século passado.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/MIDCENTURY_RETRO.png)


## Fotorrealismo
<a name="styles-collapsable7"></a>

![\[A imagem retrata um elefante no estilo fotorrealismo.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/PHOTOREALISM.png)


## Pintura digital suave
<a name="styles-collapsable8"></a>

![\[A imagem mostra um elefante no estilo de pintura digital suave.\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/images/SOFT_DIGITAL_PAINTING.png)


# Estrutura de solicitação e resposta para geração de imagens
<a name="image-gen-req-resp-structure"></a>

**Geração de imagens**  
Os exemplos a seguir apresentam diferentes casos de uso de geração de imagens. Cada exemplo fornece uma explicação dos campos usados para a geração da imagens.

------
#### [ Text-to-image request ]

```
{
    "taskType": "TEXT_IMAGE",
    "textToImageParams": {
        "text": string,
        "negativeText": string,
        "style": "3D_ANIMATED_FAMILY_FILM" |
        "DESIGN_SKETCH" | "FLAT_VECTOR_ILLUSTRATION" |
        "GRAPHIC_NOVEL_ILLUSTRATION" | "MAXIMALISM" |
        "MIDCENTURY_RETRO" | "PHOTOREALISM" |
        "SOFT_DIGITAL_PAINTING"
    },
    "imageGenerationConfig": {
        "width": int,
        "height": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int,
        "numberOfImages": int
    }
}
```

Os seguintes campos `textToImageParams` são usados nesta solicitação:
+ `text` (obrigatório): um prompt de texto para gerar a imagem. O prompt deve ter de 1 a 1.024 caracteres.
+ `negativeText` (opcional): um prompt de texto para definir o que não incluir na imagem. Esse valor deve ter de 1 a 1.024 caracteres.
+ `style` (opcional): especifica o estilo usado para gerar essa imagem. Para obter mais informações, consulte [Estilos visuais](image-gen-styles.md).

**nota**  
Evite usar palavras negativas (“não”, “nem”, “sem” etc.) em seus valores de `text` e `negativeText`. Por exemplo, se você não quiser espelhos em uma imagem, em vez de incluir “nenhum espelho” ou “sem espelhos” no campo `text`, use a palavra “espelhos” no campo `negativeText`.

------
#### [ Text-to-image request with image conditioning ]

```
{
    "taskType": "TEXT_IMAGE",
    "textToImageParams": {
        "conditionImage": string (Base64 encoded image),
        "controlMode": "CANNY_EDGE" | "SEGMENTATION", 
        "controlStrength": float,
        "text": string,
        "negativeText": string,
        "style": "3D_ANIMATED_FAMILY_FILM" |
        "DESIGN_SKETCH" | "FLAT_VECTOR_ILLUSTRATION" |
        "GRAPHIC_NOVEL_ILLUSTRATION" | "MAXIMALISM" |
        "MIDCENTURY_RETRO" | "PHOTOREALISM" |
        "SOFT_DIGITAL_PAINTING"
    },
    "imageGenerationConfig": {
        "width": int,
        "height": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int,
        "numberOfImages": int
    }
}
```

Os seguintes campos `textToImageParams` são usados nesta solicitação:
+ `conditionImage` (obrigatório): uma imagem JPEG ou PNG que orienta o layout e a composição da imagem gerada. A imagem deve ser formatada como uma string Base64. Consulte [Imagens de entrada para geração de imagens](image-gen-access.md#image-gen-input-images) para obter os requisitos adicionais.
+ `controlMode` (opcional): especifica qual modo de condicionamento será usado. O valor padrão é “CANNY\$1EDGE”.
  + `CANNY_EDGE`: os elementos da imagem gerada seguirão rigorosamente os contornos proeminentes, ou as “bordas”, da imagem de condição.
  + `SEGMENTATION`: a imagem de condição será analisada automaticamente para identificar formas de conteúdo proeminentes. Essa análise resulta em uma máscara de segmentação que orienta a geração, resultando em uma imagem gerada que segue rigorosamente o layout da imagem de condição, mas permite ao modelo mais liberdade dentro dos limites de cada área de conteúdo.
+ `controlStrength` (opcional): especifica a semelhança que o layout e a composição da imagem gerada devem ter com `conditionImage`. O intervalo é de 0 a 1,0, e valores mais baixos introduzem mais aleatoriedade. O valor padrão é 0,7.
+ `text` (obrigatório): um prompt de texto para gerar a imagem. O prompt deve ter de 1 a 1.024 caracteres.
+ `negativeText` (opcional): um prompt de texto para definir o que não incluir na imagem. Esse valor deve ter de 1 a 1.024 caracteres.
+ `style` (opcional): especifica o estilo usado para gerar essa imagem. Para obter mais informações, consulte [Estilos visuais](image-gen-styles.md).

**nota**  
Evite usar palavras negativas (“não”, “nem”, “sem” etc.) em seus valores de `text` e `negativeText`. Por exemplo, se você não quiser espelhos em uma imagem, em vez de incluir “nenhum espelho” ou “sem espelhos” no campo `text`, use a palavra “espelhos” no campo `negativeText`.

------
#### [ Color guided image generation request ]

```
{
    "taskType": "COLOR_GUIDED_GENERATION",
    "colorGuidedGenerationParams": {
        "colors": string[] (list of hexadecimal color values),
        "referenceImage": string (Base64 encoded image),
        "text": string,
        "negativeText": string
    },
    "imageGenerationConfig": {
        "width": int,
        "height": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int,
        "numberOfImages": int
    }
}
```

Os seguintes campos `colorGuidedGenerationParams` são usados nesta solicitação:
+ `colors` (obrigatório): uma lista de até dez códigos de cores que definem a paleta de cores desejada para a sua imagem. Expressos como valores hexadecimais no formato “\$1RRGGBB”. Por exemplo, “\$100FF00” é verde puro e “\$1FCF2AB” é um amarelo quente. A lista de `colors` tem o efeito mais forte quando uma `referenceImage` não é fornecida. Do contrário, as cores na lista e as cores da imagem de referência serão usadas na saída final.
+ `referenceImage` (opcional): uma imagem JPEG ou PNG para usar como referência de assunto e estilo. As cores da imagem também serão incorporadas à sua saída final, junto com as cores da lista de `colors`. Consulte [Imagens de entrada para geração de imagens](image-gen-access.md#image-gen-input-images) para obter os requisitos adicionais.
+ `text` (obrigatório): um prompt de texto para gerar a imagem. O prompt deve ter de 1 a 1.024 caracteres.
+ `negativeText` (opcional): um prompt de texto para definir o que não incluir na imagem. Esse valor deve ter de 1 a 1.024 caracteres.

**nota**  
Evite usar palavras negativas (“não”, “nem”, “sem” etc.) em seus valores de `text` e `negativeText`. Por exemplo, se você não quiser espelhos em uma imagem, em vez de incluir “nenhum espelho” ou “sem espelhos” no campo `text`, use a palavra “espelhos” no campo `negativeText`.

------
#### [ Image variation request ]

```
{
    "taskType": "IMAGE_VARIATION",
    "imageVariationParams": {
        "images": string[] (list of Base64 encoded images),
        "similarityStrength": float,
        "text": string,
        "negativeText": string
    },
    "imageGenerationConfig": {
        "height": int,
        "width": int,
        "cfgScale": float,
        "seed": int,
        "numberOfImages": int
    }
}
```

Os seguintes campos `imageVariationParams` são usados nesta solicitação:
+ `images` (obrigatório): uma lista de uma a cinco imagens para usar como referências. Cada uma deve estar no formato JPEG ou PNG e deve ser codificada como strings Base64. Consulte [Imagens de entrada para geração de imagens](image-gen-access.md#image-gen-input-images) para obter os requisitos adicionais.
+ `similarityStrength` (opcional): especifica qual a semelhança que a imagem gerada deve ter em relação às imagens de entrada. Os valores válidos são entre 0,2 e 1,0, com valores mais baixos usados para introduzir mais aleatoriedade.
+ `text` (obrigatório): um prompt de texto para gerar a imagem. O prompt deve ter de 1 a 1.024 caracteres. Se você omitir este campo, o modelo removerá elementos dentro da área mascarada. Eles serão substituídos por uma extensão perfeita do plano de fundo da imagem.
+ `negativeText` (opcional): um prompt de texto para definir o que não incluir na imagem. Esse valor deve ter de 1 a 1.024 caracteres.

**nota**  
Evite usar palavras negativas (“não”, “nem”, “sem” etc.) em seus valores de `text` e `negativeText`. Por exemplo, se você não quiser espelhos em uma imagem, em vez de incluir “nenhum espelho” ou “sem espelhos” no campo `text`, use a palavra “espelhos” no campo `negativeText`.

------

**Edição de imagem**  
Os exemplos a seguir apresentam diferentes casos de uso para geração de imagens. Cada exemplo fornece uma explicação dos campos usados para editar a imagem.

------
#### [ Inpainting request ]

```
{
    "taskType": "INPAINTING",
    "inPaintingParams": {
        "image": string (Base64 encoded image),
        "maskPrompt": string,
        "maskImage": string (Base64 encoded image),
        "text": string,
        "negativeText": string
    },
    "imageGenerationConfig": {
        "numberOfImages": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int
    }
}
```

Os seguintes campos `inPaintingParams` são usados nesta solicitação:
+ `image` (obrigatório): o JPEG ou PNG que você deseja modificar, formatado como uma string Base64. Consulte [Imagens de entrada para geração de imagens](image-gen-access.md#image-gen-input-images) para obter os requisitos adicionais.
+ `maskPrompt` ou `maskImage` (obrigatório): você deve especificar o parâmetro `maskPrompt` ou `maskImage`, mas não ambos.

  O `maskPrompt` é um prompt de texto em linguagem natural que descreve as regiões da imagem a serem editadas. 

  O `maskImage` é uma imagem que define as áreas da imagem a serem editadas. A imagem da máscara deve ter o mesmo tamanho da imagem de entrada. As áreas a serem editadas são sombreadas em preto puro, e as áreas a serem ignoradas são sombreadas em branco puro. Nenhuma outra cor é permitida na imagem da máscara.

  Observe que as solicitações de inpainting e outpainting são opostas em relação aos requisitos de cor das imagens da máscara.
+ `text` (obrigatório): um prompt de texto que descreve o que gerar dentro da região mascarada. O prompt deve ter de 1 a 1.024 caracteres. Se você omitir este campo, o modelo removerá elementos dentro da área mascarada. Eles serão substituídos por uma extensão perfeita do plano de fundo da imagem.
+ `negativeText` (opcional): um prompt de texto para definir o que não incluir na imagem. Esse valor deve ter de 1 a 1.024 caracteres.

**nota**  
Evite usar palavras negativas (“não”, “nem”, “sem” etc.) em seus valores de `text` e `negativeText`. Por exemplo, se você não quiser espelhos em uma imagem, em vez de incluir “nenhum espelho” ou “sem espelhos” no campo `text`, use a palavra “espelhos” no campo `negativeText`.

------
#### [ Outpainting request ]

```
{
    "taskType": "OUTPAINTING",
    "outPaintingParams": {
        "image": string (Base64 encoded image),
        "maskPrompt": string,
        "maskImage": string (Base64 encoded image),
        "outPaintingMode": "DEFAULT" | "PRECISE",
        "text": string,
        "negativeText": string
    },
    "imageGenerationConfig": {
        "numberOfImages": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int
    }
}
```

Os seguintes campos `outPaintingParams` são usados nesta solicitação:
+ `image` (obrigatório): o JPEG ou PNG que você deseja modificar, formatado como uma string Base64. Consulte [Imagens de entrada para geração de imagens](image-gen-access.md#image-gen-input-images) para obter os requisitos adicionais.
+ `maskPrompt` ou `maskImage` (obrigatório): você deve especificar o parâmetro `maskPrompt` ou `maskImage`, mas não ambos.

  O `maskPrompt` é um prompt de texto em linguagem natural que descreve as regiões da imagem a serem editadas. 

  O `maskImage` é uma imagem que define as áreas da imagem a serem editadas. A imagem da máscara deve ter o mesmo tamanho da imagem de entrada. As áreas a serem editadas são sombreadas em preto puro, e as áreas a serem ignoradas são sombreadas em branco puro. Nenhuma outra cor é permitida na imagem da máscara.

  Observe que as solicitações de inpainting e outpainting são opostas em relação aos requisitos de cor das imagens da máscara.
+ `outPaintingMode`: determina como a máscara que você fornece é interpretada.

  Use `DEFAULT` para fazer uma transição suave entre a área mascarada e a área não mascarada. Alguns dos pixels originais são usados como ponto de partida para o novo plano de fundo. Esse modo geralmente é melhor quando você deseja que o novo plano de fundo use cores semelhantes às do plano de fundo original. No entanto, você poderá obter um efeito de halo se seu prompt solicitar um novo plano de fundo que seja significativamente diferente do plano de fundo original.

  Use `PRECISE` para aderir estritamente aos limites da máscara. Este modo geralmente é melhor quando você está fazendo alterações significativas no plano de fundo.
+ `text` (obrigatório): um prompt de texto que descreve o que gerar dentro da região mascarada. O prompt deve ter de 1 a 1.024 caracteres. Se você omitir este campo, o modelo removerá elementos dentro da área mascarada. Eles serão substituídos por uma extensão perfeita do plano de fundo da imagem.
+ `negativeText` (opcional): um prompt de texto para definir o que não incluir na imagem. Esse valor deve ter de 1 a 1.024 caracteres.

**nota**  
Evite usar palavras negativas (“não”, “nem”, “sem” etc.) em seus valores de `text` e `negativeText`. Por exemplo, se você não quiser espelhos em uma imagem, em vez de incluir “nenhum espelho” ou “sem espelhos” no campo `text`, use a palavra “espelhos” no campo `negativeText`.

------
#### [ Background removal request ]

```
{
    "taskType": "BACKGROUND_REMOVAL",
    "backgroundRemovalParams": {
        "image": string (Base64 encoded image)
    }
}
```

O seguinte campo `backgroundRemovalParams` é usado nesta solicitação:
+ `image` (obrigatório): o JPEG ou PNG que você deseja modificar, formatado como uma string Base64. Consulte [Imagens de entrada para geração de imagens](image-gen-access.md#image-gen-input-images) para obter os requisitos adicionais.

A tarefa `BACKGROUND_REMOVAL` retornará uma imagem PNG com transparência total de 8 bits. Esse formato oferece um isolamento suave e limpo dos objetos em primeiro plano e facilita a composição da imagem com outros elementos em uma aplicação de edição de imagens, apresentação ou site. O plano de fundo pode ser facilmente alterado para uma cor sólida usando um código personalizado simples.

------
#### [ Virtual try-on ]

```
{
    "taskType": "VIRTUAL_TRY_ON",
    "virtualTryOnParams": {
        "sourceImage": string (Base64 encoded image),
        "referenceImage": string (Base64 encoded image),
        "maskType": "IMAGE" | "GARMENT" | "PROMPT",
        "imageBasedMask":{
            "maskImage": string (Base64 encoded image),
        },
        "garmentBasedMask":{
            "maskShape": "CONTOUR" | "BOUNDING_BOX" | "DEFAULT",
            "garmentClass": "UPPER_BODY" | "LOWER_BODY" |
            "FULL_BODY" | "FOOTWEAR" | "LONG_SLEEVE_SHIRT" |
            "SHORT_SLEEVE_SHIRT" | "NO_SLEEVE_SHIRT" |
            "OTHER_UPPER_BODY" | "LONG_PANTS" | "SHORT_PANTS" |
            "OTHER_LOWER_BODY" | "LONG_DRESS" | "SHORT_DRESS" |
            "FULL_BODY_OUTFIT" | "OTHER_FULL_BODY" | "SHOES" |
            "BOOTS" | "OTHER_FOOTWEAR",
            "garmentStyling":{ 
                "longSleeveStyle": "SLEEVE_DOWN" | "SLEEVE_UP",
                "tuckingStyle": "UNTUCKED" | "TUCKED",
                "outerLayerStyle": "CLOSED" | "OPEN",
            }
        },
        "promptBasedMask":{
            "maskShape": "BOUNDING_BOX" | "CONTOUR" | "DEFAULT",
            "maskPrompt": string,
        },
        "maskExclusions": { 
            "preserveBodyPose": "ON" | "OFF" | "DEFAULT",
            "preserveHands": "ON" | "OFF" | "DEFAULT",
            "preserveFace": "OFF" | "ON" | "DEFAULT"
        },
        "mergeStyle" : "BALANCED" | "SEAMLESS" | "DETAILED" ,
        "returnMask": boolean,
    },
    "imageGenerationConfig": {
        "numberOfImages": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int
    }
}
```

Os seguintes campos `virtualTryOnParams` são usados nesta solicitação:
+ `sourceImage` (obrigatório): o JPEG ou PNG que você deseja modificar, formatado como uma string Base64. Consulte [Imagens de entrada para geração de imagens](image-gen-access.md#image-gen-input-images) para obter os requisitos adicionais.
+ `referenceImage` (obrigatório): o JPEG ou PNG que contém o objeto que você deseja sobrepor à imagem de origem, formatado como uma string Base64. Consulte [Imagens de entrada para geração de imagens](image-gen-access.md#image-gen-input-images) para obter os requisitos adicionais.
+ `maskType` (obrigatório): especifica se a máscara é fornecida como uma imagem, uma indicação ou uma máscara de vestuário.
+ `imageBasedMask`: obrigatório quando `maskType` for `"IMAGE"`.

  O `maskImage` é uma imagem que define as áreas da imagem a serem editadas. A imagem da máscara deve ter o mesmo tamanho da imagem de entrada. As áreas a serem editadas são sombreadas em preto puro, e as áreas a serem ignoradas são sombreadas em branco puro. Nenhuma outra cor é permitida na imagem da máscara.
+ `garmentBasedMask`: obrigatório quando `maskType` for `"GARMENT"`.
  + `maskShape` (opcional): define a forma da caixa delimitadora da máscara. A forma e o tamanho da caixa delimitadora podem afetar a forma como a imagem de referência é transferida para a imagem de origem.
  + `garmentClass` (obrigatório): define a peça de roupa que está sendo transferida. Esse parâmetro permite que o modelo se concentre em partes específicas da imagem de referência que você deseja transferir. 
  + `garmentStyling` (opcional): fornece dicas de estilo ao modelo para determinadas peças de vestuário. Os parâmetros `longSleeveStyle` e `tuckingStyle` são aplicáveis somente aos trajes da parte superior do corpo. O parâmetro `outerLayerStyle` só é aplicável somente às roupas da camada externa e da parte superior do corpo.
+ `promptBasedMask` (obrigatório): obrigatório quando `maskType` for `"PROMPT"`.
  + `maskShape` (opcional): define a forma da caixa delimitadora da máscara. A forma e o tamanho da caixa delimitadora podem afetar a forma como a imagem de referência é transferida para a imagem de origem.
  + `maskPrompt` (obrigatório): um prompt de texto em linguagem natural que descreve as regiões da imagem a serem editadas.
+ `maskExclusions` (opcional): quando uma pessoa é detectada na imagem de origem, esses parâmetros determinam se a pose corporal, as mãos e o rosto devem ser mantidos na imagem de saída ou regenerados.
+ `mergeStyle` (opcional): determina como as imagens de origem e de referência são unidas. Cada estilo de mesclagem adota uma abordagem diferente na forma de costurar os elementos para criar a imagem final, cada um com seus benefícios e desvantagens.
  + `"BALANCED"`: protege todos os pixels não mascarados na imagem original, garantindo que eles permaneçam 100% precisos em relação à imagem original. Em alguns casos, haverá uma leve incompatibilidade perceptível de cor ou textura na imagem de saída que se apresenta como uma espécie de imagem “fantasma” do formato da máscara. É mais provável que isso ocorra quando a imagem mostrar uma pessoa em pé contra um fundo de cor sólida ou com textura uniforme. Para evitar isso, você poderá usar o estilo de mesclagem `"SEAMLESS"` como alternativa.
  + `"SEAMLESS"`: garante que nunca haja uma costura perceptível entre as áreas das imagens mascaradas e não mascaradas na imagem final. A desvantagem é que esse modo faz com que todos os pixels da imagem mudem levemente e, ocasionalmente, pode diminuir detalhes refinados nas áreas não mascaradas da imagem.
  + `"DETAILED"`: pode melhorar muito detalhes refinados, como logotipos e texto, especialmente quando a área mascarada for relativamente pequena em comparação com a imagem geral. O modelo consegue isso realizando inpainting em uma versão bem recortada e de alta resolução da imagem original, que inclui apenas a área mascarada. Em seguida, ele mescla o resultado de volta com a imagem original. Assim como no uso do modo `"BALANCED"`, ocasionalmente esse modo pode resultar em uma costura visível.
+ `returnMask` (opcional): especifica se a imagem da máscara é retornada com a imagem de saída.

------

**Corpo da resposta**  
O corpo da resposta conterá um ou mais dos seguintes campos:

```
{
    "images": "images": string[] (list of Base64 encoded images),
    "maskImage": string (Base64 encoded image),
    "error": string
}
```
+ `images`: quando bem-sucedida, o sistema retorna uma lista de strings codificadas em Base64 que representam cada imagem gerada. Essa lista nem sempre contém o mesmo número de imagens que você solicitou. Imagens individuais poderão ser bloqueadas após a geração se não estiverem alinhadas com a política de moderação de conteúdo de IA responsável (RAI) da AWS. Somente imagens alinhadas com a política de RAI são retornadas.
+ `maskImage`: quando você especificar que a imagem da máscara deve ser retornada com a saída, ela é retornada aqui.
+ `error`: esse campo será retornado se alguma imagem não estiver alinhada com a política de RAI. Senão, este campo será omitido da resposta.

O campo `imageGenerationConfig` é comum a todos os tipos de tarefas, exceto `BACKGROUND_REMOVAL`. É opcional e contém os campos a seguir. Se você omitir este objeto, as configurações padrão serão usadas.
+ `width` e `height` (opcional): define o tamanho e a proporção da imagem gerada. O padrão de ambos é 1024.

  Os valores `width` e `height` não devem ser fornecidos para os tipos de tarefa `"INPAINTING"`, `"OUTPAINTING"` ou `"VIRTUAL_TRY_ON"`.

  Para obter uma lista completa de resoluções compatíveis, consulte [Resoluções de imagem compatíveis](image-gen-access.md#image-gen-resolutions).
+ `quality` (opcional): especifica a qualidade a ser usada ao gerar a imagem: “standard” (padrão) ou “premium”.
+ `cfgScale` (opcional): especifica o nível de rigidez para que o modelo siga o prompt. Os valores variam de 1,1 a 10, inclusive, e o valor padrão é 6,5.
  + Valores baixos (1,1 a 3): mais liberdade criativa para a IA, potencialmente mais estéticos, mas com baixo contraste e resultados menos aderentes ao prompt.
  + Valores médios (4 a 7): abordagem equilibrada, normalmente recomendada para a maioria das gerações.
  + Valores altos (8 a 10): aderência rígida ao prompt, que pode produzir resultados mais precisos, mas ocasionalmente abrindo mão da estética natural e do aumento da saturação da cor.
+ `numberOfImages` (opcional): o número de imagens a serem geradas.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/image-gen-req-resp-structure.html)
+ `seed` (opcional): determina a configuração inicial de ruído para o processo de geração. Alterar o valor da semente e deixar todos os outros parâmetros iguais produzirá uma imagem totalmente nova que ainda segue suas instruções, dimensões e outras configurações. É comum experimentar uma variedade de valores de semente para encontrar a imagem perfeita.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/image-gen-req-resp-structure.html)

**Importante**  
A resolução (`width` e `height`), o `numberOfImages` e a `quality` têm um impacto no tempo necessário para que a geração seja concluída. O AWS SDK tem um `read_timeout` padrão de sessenta segundos, que pode ser facilmente excedido ao usar valores mais altos para esses parâmetros. Portanto, é recomendável que você aumente o `read_timeout` de suas chamadas de invocação para pelo menos cinco minutos (300 segundos). Os exemplos de código demonstram como fazer isso.

# Tratamento de erros
<a name="image-gen-errors"></a>

Há três tipos principais de erros que você deve tratar no código da aplicação. São erros de validação de entrada, de deflexão de entrada de IA responsável (RAI) da AWS e de deflexão de saída de RAI. Esses erros são exclusivos do Amazon Nova Canvas.

Os erros de validação de entrada ocorrem quando você usa um valor não compatível com um parâmetro de entrada. Por exemplo, um valor de largura que não corresponde a uma das resoluções compatíveis, uma imagem de entrada que excede o tamanho máximo permitido ou uma `maskImage` que contém cores diferentes de preto e branco puros. Todos os erros de validação de entrada são expressos como uma `ValidationException` que contém uma string de mensagem descrevendo a causa do problema.

Os erros de deflexão de entrada de RAI ocorrem quando se determina que qualquer um dos valores de texto ou imagens de entrada viola a política de IA responsável da AWS. Esses erros são expressos como uma `ValidationException` com uma das seguintes mensagens:
+ Mensagem de validação de texto de entrada: “This request has been blocked by our content filters. Please adjust your text prompt to submit a new request.”
+ Mensagem de validação de imagem de entrada: “This request has been blocked by our content filters. Please adjust your input image to submit a new request.”

Os erros de deflexão de saída de RAI ocorrem quando uma imagem é gerada, mas ela não está alinhada com a política de IA responsável da AWS. Quando isso ocorre, uma exceção não é usada. Em vez disso, uma resposta bem-sucedida é retornada e sua estrutura contém um campo de erro que é uma string com um dos seguintes valores:
+ Se todas as imagens solicitadas violarem a política de RAI: “All of the generated images have been blocked by our content filters.”
+ Se algumas imagens solicitadas, mas não todas, violarem a política de RIA: “Some of the generated images have been blocked by our content filters.”

# Exemplos de código
<a name="image-gen-code-examples"></a>

Os exemplos a seguir fornecem amostras de código para várias tarefas de geração de imagens.

------
#### [ Text to image generation ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an image from a text prompt with the Amazon Nova Canvas model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """

    logging.basicConfig(level=logging.INFO,
                        format="%(levelname)s: %(message)s")

    model_id = 'amazon.nova-canvas-v1:0'

    prompt = """A photograph of a cup of coffee from the side."""

    body = json.dumps({
        "taskType": "TEXT_IMAGE",
        "textToImageParams": {
            "text": prompt
        },
        "imageGenerationConfig": {
            "numberOfImages": 1,
            "height": 1024,
            "width": 1024,
            "cfgScale": 8.0,
            "seed": 0
        }
    })

    try:
        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred:", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Inpainting ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to use inpainting to generate an image from a source image with 
the Amazon Nova Canvas  model (on demand).
The example uses a mask prompt to specify the area to inpaint.
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "INPAINTING",
            "inPaintingParams": {
                "text": "Modernize the windows of the house",
                "negativeText": "bad quality, low res",
                "image": input_image,
                "maskPrompt": "windows"
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Outpainting ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to use outpainting to generate an image from a source image with 
the Amazon Nova Canvas  model (on demand).
The example uses a mask image to outpaint the original image.
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image and mask image from file and encode as base64 strings.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')
        with open("/path/to/mask_image", "rb") as mask_image_file:
            input_mask_image = base64.b64encode(
                mask_image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "OUTPAINTING",
            "outPaintingParams": {
                "text": "Draw a chocolate chip cookie",
                "negativeText": "bad quality, low res",
                "image": input_image,
                "maskImage": input_mask_image,
                "outPaintingMode": "DEFAULT"
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        }
        )

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Image variation ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an image variation from a source image with the
Amazon Nova Canvas  model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "IMAGE_VARIATION",
            "imageVariationParams": {
                "text": "Modernize the house, photo-realistic, 8k, hdr",
                "negativeText": "bad quality, low resolution, cartoon",
                "images": [input_image],
                "similarityStrength": 0.7,  # Range: 0.2 to 1.0
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Image conditioning ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate image conditioning from a source image with the
Amazon Nova Canvas model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "TEXT_IMAGE",
            "textToImageParams": {
                "text": "A robot playing soccer, anime cartoon style",
                "negativeText": "bad quality, low res",
                "conditionImage": input_image,
                "controlMode": "CANNY_EDGE"
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Color guided content ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an image from a source image color palette with the
Amazon Nova Canvas   model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "COLOR_GUIDED_GENERATION",
            "colorGuidedGenerationParams": {
                "text": "digital painting of a girl, dreamy and ethereal, pink eyes, peaceful expression, ornate frilly dress, fantasy, intricate, elegant, rainbow bubbles, highly detailed, digital painting, artstation, concept art, smooth, sharp focus, illustration",
                "negativeText": "bad quality, low res",
                "referenceImage": input_image,
                "colors": ["#ff8080", "#ffb280", "#ffe680", "#ffe680"]
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Background removal ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an image with background removal with the
Amazon Nova Canvas   model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "BACKGROUND_REMOVAL",
            "backgroundRemovalParams": {
                "image": input_image,
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------