View a markdown version of this page

Stability AI Image Services - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Stability AI Image Services

Você pode usar o Stability AI Image Services com o Amazon Bedrock para acessar treze ferramentas especializadas de edição de imagens. Essas ferramentas foram projetadas para acelerar os fluxos de trabalho criativos profissionais. Com o Stability AI Image Services, você pode gerar imagens a partir de um esboço, reestruturar e reestilizar uma imagem existente. Você também pode remover e substituir objetos em uma imagem.

Esta seção descreve como fazer chamadas de inferência para o Stability AI Image Services usando o. InvokeModel Ela também oferece exemplos de código em Python e exemplos de imagens antes e depois do uso do Stability AI Image Services.

O Stability AI Image Services está disponível nas seguintes categorias:

  • Editar — serviços de edição de AI-based imagens, incluindo pintura embutida com máscaras (preenchimento generativo) ou com palavras. Inclui ferramentas para colocação de produtos e publicidade, bem como ferramentas básicas, como remoção de plano de fundo.

  • Controle — Pode receber instruções, mapas e outros guias. Esses serviços usam ControlNets tecnologias semelhantes baseadas em modelos de difusão estável.

nota

A assinatura de qualquer edição ou controle do Stability AI Image Service inscreve você automaticamente em todos os treze serviços de imagem Stability AI disponíveis.

Solicitação e reposta

O corpo da solicitação é passado no body campo de uma solicitação para InvokeModel.

Campo do corpo da solicitação de invocação do modelo

Ao fazer uma InvokeModel chamada usando o Stability AI Image Services, preencha o campo do corpo com um objeto JSON parecido com o seguinte.

{ 'prompt': 'Create an image of a panda' }

Campo de corpo de respostas de invocação do modelo

Quando você faz uma InvokeModel chamada usando o Stability AI Image Services, a resposta se parece com a seguinte:

{ 'seeds': [2130420379], 'finish_reasons': [null], 'images': ['...'] }
  • seeds: (string) lista de propagações usadas para gerar imagens para o modelo.

  • finish_reasons: enumeração indicando se a solicitação foi filtrada ou não. null indicará que a solicitação foi bem-sucedida. Valores atuais possíveis: "Filter reason: prompt", "Filter reason: output image", "Filter reason: input image", "Inference error", null.

  • images: uma lista de imagens geradas no formato de string base64.

Para obter mais informações, consulte https://platform.us.stability.ai/docs/api-reference # tag/v1generation.

De alto nível

A seção a seguir descreve os sofisticados Stability AI Image Services.

O Creative Upscale captura imagens entre 64x64 e 1 megapixel e as amplia para resolução 4K. Esse serviço pode aprimorar imagens de 20 a 40 vezes, preservando e, muitas vezes, aprimorando a qualidade. O Creative Upscale funciona melhor em imagens altamente degradadas e não é para fotos de 1 megapixel ou mais, pois realiza reimaginações pesadas.

O Creative Upscale tem os seguintes parâmetros obrigatórios:

  • prompt — O que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul. Mínimo de 0 e máximo de 10 mil caracteres.

  • image — (string) A imagem Base64 para aprimorar. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels deve estar entre 4.096 e 1.048.576 pixels. Formatos compatíveis: jpeg, png e webp.

Os seguintes parâmetros são opcionais:

  • criatividade — (número) Indica o quão criativo o modelo deve ser ao aumentar a escala de uma imagem. Valores mais altos resultarão na adição de mais detalhes à imagem durante o aumento de escala. Intervalo entre 0,1 e 0,5. Padrão 0,3

  • negative_prompt — (string) Uma sinopse de texto descrevendo o que você não deseja ver na imagem de saída. Este é um recurso avançado. Máximo de 10 mil caracteres.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • style_preset — Guia o modelo de imagem em direção a um estilo específico. Enumeração: 3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk, origami, photographic, pixel-art e tile-texture.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-creative-upscale-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-creative-upscale-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação Creative Upscale. O aviso usado é: Essa arte digital onírica captura um vibrante e caleidoscópico Big Ben em Londres.

O Conservative Upscale captura imagens entre 64x64 e 1 megapixel e as amplia para resolução 4K. Esse serviço pode aprimorar imagens de 20 a 40 vezes, preservando todos os aspectos. O Conservative Upscale minimiza as alterações na imagem e não deve ser usado para reimaginar uma imagem.

O Conservative Upscale tem os seguintes parâmetros necessários:

  • prompt — O que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul. Mínimo de 0 e máximo de 10 mil caracteres.

  • image — (string) A imagem Base64 para aprimorar. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

Os seguintes parâmetros são opcionais:

  • criatividade — (número) Indica o quão criativo o modelo deve ser ao aumentar a escala de uma imagem. Valores mais altos resultarão na adição de mais detalhes à imagem durante o aumento de escala. Intervalo entre 0,1 e 0,5. Padrão 0,35

  • negative_prompt — (string) Uma sinopse de texto descrevendo o que você não deseja ver na imagem de saída. Este é um recurso avançado. Máximo de 10 mil caracteres.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-conservative-upscale-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-conservative-upscale-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação Conservative Upscale. O aviso usado é: Essa arte digital onírica captura um vibrante e caleidoscópico Big Ben em Londres.

O Fast Upscale melhora a resolução da imagem em 4 vezes usando IA preditiva e generativa. Esse serviço leve e rápido é ideal para melhorar a qualidade das imagens compactadas, tornando-o adequado para postagens em mídias sociais e outros aplicativos.

O Fast upscale tem os seguintes parâmetros necessários:

  • image — (string) A imagem Base64 para aprimorar. A largura deve estar entre 32 e 1.536 pixels. A altura deve estar entre 32 e 1.536 pixels. A contagem total de pixels deve estar entre 1.024 e 1.048.576 pixels. Formatos compatíveis: jpeg, png e webp.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-fast-upscale-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-fast-upscale-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação Fast Upscale.

Edição

A seção a seguir descreve a edição do Stability AI Image Services.

O recurso preencher modifica imagens de forma inteligente preenchendo ou substituindo áreas especificadas por um novo conteúdo com base no conteúdo de uma imagem de máscara.

O preenchimento tem os seguintes parâmetros obrigatórios:

  • prompt — O que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul. Mínimo de 0 e máximo de 10 mil caracteres.

  • image — (string) A imagem Base64 a ser pintada. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

Os seguintes parâmetros são opcionais:

  • style_preset: (string) orienta o modelo de imagem em direção a um estilo específico. Enumeração: 3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk, origami, photographic, pixel-art e tile-texture.

  • negative_prompt — (string) Uma sinopse de texto descrevendo o que você não deseja ver na imagem de saída. Este é um recurso avançado. Máximo de 10 mil caracteres.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • mask — (string) Controla a força do processo de pintura por pixel. Você pode controlá-lo por meio de uma segunda imagem (passada para esse parâmetro) ou pelo canal alfa do parâmetro da imagem.

    • Passando uma máscara — A imagem passada para esse parâmetro deve ser uma imagem em preto e branco que represente, em qualquer pixel, a força da pintura com base no quão escuro ou claro é o pixel em questão. Os pixels totalmente pretos não representam a intensidade do preenchimento, enquanto os pixels totalmente brancos representam a intensidade máxima. Caso a máscara tenha um tamanho diferente do parâmetro da imagem, ela será redimensionada automaticamente.

    • Suporte ao canal alfa — Se você não fornecer uma máscara explícita, uma será derivada do canal alfa do parâmetro de imagem. Os pixels transparentes serão preenchidos enquanto os pixels opacos serão preservados. Caso uma imagem com um canal alfa seja fornecida com uma máscara, a máscara terá precedência.

  • grow_mask — Aumenta as bordas da máscara para fora em todas as direções de acordo com o número especificado de pixels. A área expandida ao redor da máscara ficará desfocada, o que pode ajudar a suavizar a transição entre o conteúdo com preenchimento e a imagem original. Varia de 0 a 20. Padrão: 5. Experimente esse parâmetro se você notar emendas ou arestas ao redor do conteúdo com preenchimento. Observe que o crescimento excessivo pode obscurecer detalhes finos na and/or mesclagem de regiões mascaradas próximas.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-inpaint-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64, "prompt": "artificer of time and space" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-inpaint-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64, "prompt": "artificer of time and space" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação de preenchimento.

Input

Máscara

Output

Homem em terno azul de três peças em pé ao ar livre à noite com o horizonte da cidade ao fundo.

“Man in metropolis”, gerada pelo Stable Image Ultra, com prompts e edições de Sanwal Yousaf. Licenciada sob a Creative Commons BY 4.0

Uma imagem de máscara mostrando a área selecionada para pintura embutida, com a região selecionada destacada.
Pessoa usando armadura futurista com elementos azuis brilhantes contra o horizonte da cidade à noite.

O Outpaint insere conteúdo adicional em uma imagem para preencher o espaço em qualquer direção. Outros métodos automatizados ou manuais para expandir o conteúdo da imagem podem deixar artefatos visíveis. O serviço Outpaint minimiza as indicações de que a imagem original foi editada.

O Outpaint tem os seguintes parâmetros necessários:

  • image — (string) A imagem Base64 a ser pintada. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

    nota

    Pelo menos uma direção de pintura externa: (esquerda, direita, para cima ou para baixo) deve ser fornecida com um valor diferente de zero. Para obter resultados de melhor qualidade, considere a composição e o conteúdo da imagem original ao escolher as direções da pintura.

Os seguintes parâmetros são opcionais:

  • prompt — O que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul. Mínimo de 0 e máximo de 10 mil caracteres.

  • style_preset: (string) orienta o modelo de imagem em direção a um estilo específico. Enumeração: 3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk, origami, photographic, pixel-art e tile-texture.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • criatividade — (número) Indica o quão criativo o modelo deve ser ao pintar uma imagem. Valores mais altos resultarão na adição de mais conteúdo criativo à imagem durante a pintura externa. Intervalo entre 0,1 e 1,0. Padrão: 0,5.

  • left — (inteiro) O número de pixels a serem pintados no lado esquerdo da imagem. Pelo menos uma direção de pintura externa deve ser fornecida com um valor diferente de zero. Intervalo de 0 a 2000. Padrão 0.

  • right — (inteiro) O número de pixels a serem pintados no lado direito da imagem. Pelo menos uma direção de pintura externa deve ser fornecida com um valor diferente de zero. Intervalo de 0 a 2000. Padrão 0.

  • up — (inteiro) O número de pixels a serem pintados na parte superior da imagem. Pelo menos uma direção de pintura externa deve ser fornecida com um valor diferente de zero. Intervalo de 0 a 2000. Padrão 0.

  • down — (inteiro) O número de pixels a serem pintados na parte inferior da imagem. Pelo menos uma direção de pintura externa deve ser fornecida com um valor diferente de zero. Intervalo de 0 a 2000. Padrão 0.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-outpaint-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "left": 512, "right": 512, "up": 200, "down": 100 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-outpaint-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "left": 512, "right": 512, "up": 200, "down": 100 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação do Outpaint.

Pesquisar e recolorir permite que você altere a cor de um objeto específico em uma imagem usando um prompt. Esse serviço é uma versão específica do preenchimento que não requer máscara. Ele segmentará automaticamente o objeto e a aplicará uma nova cor usando as cores solicitadas no prompt.

Pesquisar e recolorir tem os seguintes parâmetros obrigatórios:

  • prompt — O que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul. Mínimo de 0 e máximo de 10 mil caracteres.

  • image — (string) A imagem Base64 a ser recolorida. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

  • select_prompt — (string) Breve descrição do que pesquisar na imagem. Máximo de 10 mil caracteres.

Os seguintes parâmetros são opcionais:

  • style_preset: (string) orienta o modelo de imagem em direção a um estilo específico. Enumeração: 3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk, origami, photographic, pixel-art e tile-texture.

  • negative_prompt — (string) Uma sinopse de texto descrevendo o que você não deseja ver na imagem de saída. Este é um recurso avançado. Máximo de 10 mil caracteres.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • grow_mask — Aumenta as bordas da máscara para fora em todas as direções de acordo com o número especificado de pixels. A área expandida ao redor da máscara ficará desfocada, o que pode ajudar a suavizar a transição entre o conteúdo com preenchimento e a imagem original. Varia de 0 a 20. Padrão: 5. Experimente esse parâmetro se você notar emendas ou arestas ao redor do conteúdo com preenchimento. Observe que o crescimento excessivo pode obscurecer detalhes finos na and/or mesclagem de regiões mascaradas próximas.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-recolor-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "pink jacket", "select_prompt": "jacket" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-recolor-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "pink jacket", "select_prompt": "jacket" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação de Pesquisa e Recoloração. O aviso usado é: jaqueta rosa.

Input

Output

Pessoa usando óculos escuros e jaqueta azul com mochila em um cenário de montanha nevada.

“Man wearing puffer jacket”, gerada pelo Stable Image Ultra, com prompts e edições de Sanwal Yousaf. Licenciada sob a Creative Commons BY 4.0

Pessoa usando óculos escuros e jaqueta roxa de inverno com mochila em um cenário de montanha nevada.

Pesquisar e substituir permite que você use um prompt de pesquisa em linguagem simples para identificar um objeto a ser substituído. O serviço segmentará automaticamente o objeto e o substituirá pelo objeto solicitado no prompt sem precisar de uma máscara.

Pesquisar e substituir tem os seguintes parâmetros obrigatórios:

  • prompt — O que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul. Mínimo de 0 e máximo de 10 mil caracteres.

  • image — (string) A imagem Base64 a ser recolorida. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

  • search_prompt — (string) Breve descrição do que pintar na imagem. Máximo de 10 mil caracteres.

Os seguintes parâmetros são opcionais:

  • style_preset: (string) orienta o modelo de imagem em direção a um estilo específico. Enumeração: 3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk, origami, photographic, pixel-art e tile-texture.

  • negative_prompt — (string) Uma sinopse de texto descrevendo o que você não deseja ver na imagem de saída. Este é um recurso avançado. Máximo de 10 mil caracteres.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • grow_mask — Aumenta as bordas da máscara para fora em todas as direções de acordo com o número especificado de pixels. A área expandida ao redor da máscara ficará desfocada, o que pode ajudar a suavizar a transição entre o conteúdo com preenchimento e a imagem original. Varia de 0 a 20. Padrão: 5. Experimente esse parâmetro se você notar emendas ou arestas ao redor do conteúdo com preenchimento. Observe que o crescimento excessivo pode obscurecer detalhes finos na and/or mesclagem de regiões mascaradas próximas.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-replace-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "jacket", "search_prompt": "sweater", } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-replace-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "jacket", "search_prompt": "sweater", } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação de Pesquisa e Substituição. O prompt usado é: jaqueta.

Input

Output

Mulher vestindo suéter laranja ao ar livre com folhagem de outono no fundo.

“Female model wearing fall sweater”, gerada pelo Stable Image Ultra. Prompts e edições de Sanwal Yousaf. Licenciada sob a Creative Commons BY 4.0

Mulher vestindo jaqueta verde-oliva e camisa branca ao ar livre com folhagem de outono no fundo.

Apagar permite que você remova elementos indesejados usando máscaras de imagem e mantenha a consistência do plano de fundo de forma inteligente.

Apagar tem os seguintes parâmetros obrigatórios:

  • image — (string) A imagem Base64 a ser apagada. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

Os seguintes parâmetros são opcionais:

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • mask — (string) Controla a força do processo de pintura por pixel. Você pode controlá-lo por meio de uma segunda imagem (passada para esse parâmetro) ou pelo canal alfa do parâmetro da imagem.

    • Passando uma máscara — A imagem passada para esse parâmetro deve ser uma imagem em preto e branco que represente, em qualquer pixel, a força da pintura com base no quão escuro ou claro é o pixel em questão. Os pixels totalmente pretos não representam a intensidade do preenchimento, enquanto os pixels totalmente brancos representam a intensidade máxima. Caso a máscara tenha um tamanho diferente do parâmetro da imagem, ela será redimensionada automaticamente.

    • Suporte ao canal alfa — Se você não fornecer uma máscara explícita, uma será derivada do canal alfa do parâmetro de imagem. Os pixels transparentes serão preenchidos enquanto os pixels opacos serão preservados. Caso uma imagem com um canal alfa seja fornecida com uma máscara, a máscara terá precedência.

  • grow_mask — Aumenta as bordas da máscara para fora em todas as direções de acordo com o número especificado de pixels. A área expandida ao redor da máscara ficará desfocada, o que pode ajudar a suavizar a transição entre o conteúdo com preenchimento e a imagem original. Varia de 0 a 20. Padrão: 5. Experimente esse parâmetro se você notar emendas ou arestas ao redor do conteúdo com preenchimento. Observe que o crescimento excessivo pode obscurecer detalhes finos na and/or mesclagem de regiões mascaradas próximas.

nota

Para obter os melhores resultados de apagamento, certifique-se de que sua máscara defina com precisão as áreas a serem removidas. Se nenhuma máscara explícita for fornecida, o serviço usará o canal alfa da imagem de entrada. A máscara terá precedência se ambos forem fornecidos.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-erase-object-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8'), with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-erase-object-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8'), with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação de apagamento.

Input

Máscara

Output

Visão aérea da mesa organizada com laptop, cadernos abertos, canetas e plantas em uma superfície de madeira.

“Students Desk”, gerada pelo Stable Image Ultra. Prompts e edições de Sanwal Yousaf. Licenciada sob a Creative Commons BY 4.0

Uma imagem de máscara mostrando o objeto selecionado para remoção, com a área alvo destacada.
Visão aérea da mesa organizada com laptop, cadernos abertos, lápis e diários azuis.

Remover plano de fundo permite isolar os objetos do fundo com precisão.

Remover plano de fundo tem os seguintes parâmetros obrigatórios:

  • image — (string) A imagem Base64 da qual remover o fundo. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

Os seguintes parâmetros são opcionais:

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-remove-background-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-remove-background-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação de remoção de plano de fundo.

Input

Output

Mulher vestindo suéter laranja ao ar livre com folhagem de outono no fundo.

“Female model wearing fall sweater”, gerada pelo Stable Image Ultra. Prompts e edições de Sanwal Yousaf. Licenciada sob a Creative Commons BY 4.0

Pessoa vestindo suéter de malha laranja contra fundo com listras horizontais.

Controle

A seção a seguir descreve o controle do Stability AI Image Services.

Aprimore esboços grosseiros desenhados à mão para obter saídas refinadas com controle preciso. Para imagens sem esboço, o Control Sketch permite a manipulação detalhada da aparência final usando as linhas de contorno e as bordas da imagem.

Controlar esboço tem os seguintes parâmetros obrigatórios:

  • prompt — O que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul. Mínimo de 0 e máximo de 10 mil caracteres.

  • image — (string) A imagem Base64 do esboço. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

Os seguintes parâmetros são opcionais:

  • control_strength — (número) Quanta influência, ou controle, a imagem tem na geração. Representado como uma número flutuante entre 0 e 1, em que 0 é a influência mínima e 1 é a máxima. Padrão: 0,7.

  • negative_prompt — (string) Uma sinopse de texto descrevendo o que você não deseja ver na imagem de saída. Este é um recurso avançado. Máximo de 10 mil caracteres.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • style_preset — Guia o modelo de imagem em direção a um estilo específico. Enumeração: 3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk, origami, photographic, pixel-art e tile-texture.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-sketch-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "a house with background of mountains and river flowing nearby" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-sketch-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "a house with background of mountains and river flowing nearby" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma chamada do Control Sketch. O comando usado é: uma casa com fundo de montanhas e rio fluindo nas proximidades.

Input

Output

Desenho de linha simples de uma casa na encosta de uma colina com montanhas ao fundo.

“House, mountains, and river sketch”, de Sanwal Yousaf. Licenciada sob a Creative Commons BY 4.0

Vale montanhoso com rio, prados verdes, construções tradicionais e picos cobertos de neve.

Controlar estrutura permite gerar imagens enquanto mantém a estrutura de uma imagem de entrada. Isso é especialmente valioso para cenários avançados de criação de conteúdo, como recriar cenas ou renderizar personagens com base em modelos.

Controlar estrutura tem os seguintes parâmetros obrigatórios:

  • prompt — O que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul. Mínimo de 0 e máximo de 10 mil caracteres.

  • image — (string) A imagem Base64 do esboço. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

Os seguintes parâmetros são opcionais:

  • control_strength — (número) Quanta influência, ou controle, a imagem tem na geração. Representado como uma número flutuante entre 0 e 1, em que 0 é a influência mínima e 1 é a máxima. Padrão: 0,7.

  • negative_prompt — (string) Uma sinopse de texto descrevendo o que você não deseja ver na imagem de saída. Este é um recurso avançado. Máximo de 10 mil caracteres.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • style_preset — Guia o modelo de imagem em direção a um estilo específico. Enumeração: 3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk, origami, photographic, pixel-art e tile-texture.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-structure-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "surreal structure with motion generated sparks lighting the scene" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-structure-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "surreal structure with motion generated sparks lighting the scene" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma operação da Estrutura de Controle. O aviso usado é: estrutura surreal com faíscas geradas por movimento iluminando a cena.

Input

Output

Interior do túnel com padrão de tijolos iluminados e faíscas voando na abertura.

O Guia de Estilo permite extrair elementos estilísticos de uma imagem de entrada. Ele os usa para orientar a criação de uma imagem de saída com base no prompt. O resultado é uma nova imagem no mesmo estilo da imagem de entrada.

Guia de estilo tem os seguintes parâmetros obrigatórios:

  • prompt — O que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul. Mínimo de 0 e máximo de 10 mil caracteres.

  • image — (string) A imagem Base64 do esboço. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

Os seguintes parâmetros são opcionais:

  • aspect_ratio: (string) controla a proporção da imagem gerada. Esse parâmetro só é válido para solicitações de texto para imagem. Padrão 1:1. Enumeração: 16:9, 1:1, 21:9, 2:3, 3:2, 4:5, 5:4, 9:16, 9:21. Padrão 1:1.

  • negative_prompt — (string) Uma sinopse de texto descrevendo o que você não deseja ver na imagem de saída. Este é um recurso avançado. Máximo de 10 mil caracteres.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • fidelidade — (número) O quanto o estilo da imagem de saída se assemelha ao estilo da imagem de entrada. Varia de 0 a 1. Padrão: 0,5.

  • style_preset — Guia o modelo de imagem em direção a um estilo específico. Enumeração: 3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk, origami, photographic, pixel-art e tile-texture.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-style-guide-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "wide shot of modern metropolis" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-style-guide-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "wide shot of modern metropolis" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma chamada do Style Guide. O aviso usado é: visão geral da metrópole moderna.

Input

Output

Paisagem urbana abstrata colorida com edifícios em tons de azul, amarelo, verde, laranja e vermelho.

A transferência de estilo permite que você aplique características visuais de imagens de estilo de referência às imagens de destino. O serviço Style Guide extrai elementos estilísticos de uma imagem de entrada e os usa para orientar a criação de uma imagem de saída com base no prompt. O Style Transfer transforma especificamente o conteúdo existente enquanto preserva a composição original. Essa ferramenta ajuda a criar conteúdo consistente em vários ativos.

A transferência de estilo tem os seguintes parâmetros obrigatórios:

  • init_image — (string) Uma imagem Base64 contendo o assunto que você deseja reestilizar. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

  • style_image — (string) Uma imagem Base64 contendo o assunto que você deseja reestilizar. Cada lado da imagem deve ter pelo menos 64 pixels. A contagem total de pixels não pode ultrapassar 9.437.184 pixels. A taxa de proporção deve estar entre 1:2.5 e 2.5:1. Formatos compatíveis: jpeg, png e webp.

Os seguintes parâmetros são opcionais:

  • prompt: (string) o que você deseja ver na imagem de saída. Um prompt forte e descritivo que define claramente os elementos, as cores e os assuntos proporcionará melhores resultados. Para controlar o peso de determinada palavra, use o formato (word:weight), em que “word” é a palavra da qual você gostaria de controlar o peso e “weight” é um valor. Um valor entre 0 e 1,0 remove a ênfase da palavra e um valor entre 1,1 e 2 enfatiza a palavra. Por exemplo: o céu estava nítido, com a especificação (blue:0.3) e (green:1.8), significaria um céu azul e verde, mas mais verde do que azul.

  • negative_prompt — (string) Uma sinopse de texto descrevendo o que você não deseja ver na imagem de saída. Este é um recurso avançado. Máximo de 10 mil caracteres.

  • seed: (número) um valor específico que é usado para orientar a “aleatoriedade” da geração. (Omita esse parâmetro ou passe 0 para usar uma propagação aleatória.) Varia de 0 a 4.294.967.295. Padrão: 0.

  • output_format — (string) Dita o tipo de conteúdo da imagem gerada. Enumeração: jpeg, png, webp. Padrão: png.

  • composition_fidelity — (número) O quanto o estilo da imagem de saída se assemelha ao estilo da imagem de entrada. Varia de 0 a 1. Padrão: 0,9.

  • style_strength — (número) Às vezes chamado de remoção de ruído, esse parâmetro controla quanta influência o parâmetro style_image tem na imagem gerada. Um valor de 0 produziria uma imagem idêntica à entrada. Um valor de 1 seria como se você não tivesse passado nenhuma imagem. Varia de 0 a 1. Padrão: 1.

  • change_strength — (número) O quanto a imagem original deve mudar. Varia de 0,1 a 1. Padrão: 0,9.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" style_image = "./content/style.jpg" region = "us-east-1" model_id = "us.stability.stable-style-transfer-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(style_image, "rb") as style_image_file: style_image_base64 = base64.b64encode(style_image_file.read()).decode('utf-8') params = { "init_image": image_base64, "style_image": style_image_base64, "prompt": "statue" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/cat_statue_512x512.jpg" style_image = "./content/glowbot_style.jpg" region = "us-east-1" model_id = "us.stability.stable-style-transfer-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(style_image, "rb") as style_image_file: style_image_base64 = base64.b64encode(style_image_file.read()).decode('utf-8') params = { "init_image": image_base64, "style_image": style_image_base64, "prompt": "statue" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

A tabela a seguir mostra as imagens de entrada e saída de uma chamada de transferência de estilo.

Input

Estilo

Output

Estátua clássica com iluminação ciana em ambiente urbano com arquitetura moderna em segundo plano.