

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Stability AI Image Services
<a name="stable-image-services"></a>

Amazon Bedrock과 함께 Stability AI Image Services를 사용하여 13개의 특수 이미지 편집 도구에 액세스할 수 있습니다. 이러한 도구는 전문적인 크리에이티브 워크플로를 가속화하도록 설계되었습니다. Stability AI Image Services를 사용하면 스케치에서 이미지를 생성하고, 기존 이미지를 재구성하고, 스타일을 변경할 수 있습니다. 이미지 내에서 객체를 제거하고 교체할 수도 있습니다.

이 섹션에서는 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)을 사용하여 Stability AI Image Services를 추론 직접 호출하는 방법을 설명합니다. 또한 이 섹션에서는 Python의 코드 예제와 Stability AI Image Services 사용 전후의 이미지 예제를 제공합니다.

Stability AI Image Services는 다음 범주에서 사용할 수 있습니다.
+ **편집** - 마스크(생성 채우기) 또는 단어를 사용한 인페인팅을 포함한 AI 기반 이미지 편집 서비스입니다. 제품 배치 및 광고를 위한 도구와 배경 제거와 같은 기본 도구를 포함합니다.
+ **제어** - 프롬프트, 맵 및 기타 가이드를 사용할 수 있습니다. 이러한 서비스는 안정적인 확산 모델을 기반으로 구축된 ControlNets 유사한 기술을 사용합니다.

**참고**  
편집 또는 제어 Stability AI Image Service를 구독하면 사용 가능한 13개의 모든 Stability AI Image Services에 자동으로 등록됩니다.

**Topics**
+ [요청 및 응답](#model-parameters-stable-image-services-request-response)
+ [업스케일링](#stable-image-services-upscale)
+ [편집](#stable-image-services-edit)
+ [컨트롤](#stable-image-services-control)

## 요청 및 응답
<a name="model-parameters-stable-image-services-request-response"></a>

요청 본문은 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 요청의 `body` 필드에 전달됩니다.

**모델 간접 호출 요청 본문 필드**

Stability AI Image Services를 사용하여 InvokeModel을 호출할 때 본문 필드를 다음과 같은 JSON 객체로 채웁니다.

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

**모델 간접 호출 응답 본문 필드**

Stability AI Image Services를 사용하여 InvokeModel을 호출하면 응답은 다음과 같습니다.

```
{
    'seeds': [2130420379], 
    'finish_reasons': [null], 
    'images': ['...']
}
```
+ **seeds** - (문자열) 모델의 이미지를 생성하는 데 사용되는 시드 목록입니다.
+ **finish\_reasons** – 요청이 필터링되었는지 여부를 나타내는 열거형입니다. `null`은 요청이 성공했음을 나타냅니다. 현재 가능한 값: `"Filter reason: prompt", "Filter reason: output image", "Filter reason: input image", "Inference error", null`.
+ **images** - base64 문자열 형식으로 생성된 이미지 목록입니다.

자세한 내용은 [https://platform.us.stability.ai/docs/api-reference\#tag/v1generation](https://platform.us.stability.ai/docs/api-reference#tag/v1generation) 참조하십시오.

## 업스케일링
<a name="stable-image-services-upscale"></a>

다음 섹션에서는 업스케일 안정성 AI 이미지 서비스에 대해 설명합니다.

### 크리에이티브 업스케일
<a name="stable-image-services-5"></a>

크리에이티브 업스케일은 64x64에서 1메가픽셀 사이의 이미지를 가져와 4K 해상도로 업스케일링합니다. 이 서비스는 품질을 보존하고 자주 개선하면서 이미지를 20\~40회 확장할 수 있습니다. 크리에이티브 업스케일은 성능이 저하된 이미지에서 가장 잘 작동하며 1메가픽셀 이상의 사진은 심하게 재구상하기 때문에 적합하지 않습니다.

Creative Upscale에는 다음과 같은 필수 파라미터가 있습니다.
+ **프롬프트** - 출력 이미지에서 보려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다. 최소 0자 및 최대 10,000자입니다.
+ **image** – (문자열) 확장할 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 4,096\~1,048,576픽셀이어야 합니다. 지원되는 형식: jpeg, png, webp.

다음 파라미터는 선택적입니다.
+ **창의성** - (숫자) 이미지를 업스케일링할 때 모델이 얼마나 창의적이어야 하는지를 나타냅니다. 값이 높을수록 확장 중에 이미지에 추가 세부 정보가 추가됩니다. 범위는 0.1\~0.5입니다. 기본값 0.3
+ **negative\_prompt** – (문자열) 출력 이미지에서 보고 싶지 않은 내용을 설명하는 텍스트 흐림입니다. 이는 고급 기능입니다. 최대 10,000자입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **style\_preset** - 이미지 모델을 특정 스타일로 안내합니다. 열거형: 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, 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)
```

------

다음 표에는 Creative Upscale 작업의 입력 및 출력 이미지가 나와 있습니다. 사용되는 프롬프트는 다음과 같습니다. *이 몽환적인 디지털 아트는 런던의 생생하고 가성미 있는 빅 벤을 캡처합니다*.


|  입력  |  출력  | 
| --- | --- | 
|  ![조명이 켜진 클럭 얼굴이 있는 고딕 아키텍처를 보여주는 Big Ben 클럭 타워입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-creative-upscale.jpg)  |  ![흐린 하늘에 대한 황금 디테일과 흰색 시계 얼굴을 보여주는 빅 벤 시계탑입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-creative-upscale.jpg)  | 

### 보수적 업스케일
<a name="stable-image-services-6"></a>

보수적 업스케일은 64x64에서 1메가픽셀 사이의 이미지를 가져와 4K 해상도로 업스케일링합니다. 이 서비스는 모든 측면을 유지하면서 이미지를 20\~40회 확장할 수 있습니다. 보수적 업스케일은 이미지 변경을 최소화하며 이미지를 재구상하는 데 사용해서는 안 됩니다.

Conservative Upscale에는 다음과 같은 필수 파라미터가 있습니다.
+ **프롬프트** - 출력 이미지에서 보려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다. 최소 0자 및 최대 10,000자입니다.
+ **image** – (문자열) 확장할 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.

다음 파라미터는 선택적입니다.
+ **창의성** - (숫자) 이미지를 업스케일링할 때 모델이 얼마나 창의적이어야 하는지를 나타냅니다. 값이 높을수록 확장 중에 이미지에 추가 세부 정보가 추가됩니다. 범위는 0.1\~0.5입니다. 기본값 0.35
+ **negative\_prompt** – (문자열) 출력 이미지에서 보고 싶지 않은 내용을 설명하는 텍스트 흐림입니다. 이는 고급 기능입니다. 최대 10,000자입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 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)
```

------

다음 표에는 보수적 업스케일 작업의 입력 및 출력 이미지가 나와 있습니다. 사용되는 프롬프트는 다음과 같습니다. *이 몽환적인 디지털 아트는 런던의 생생하고 가성미 있는 빅 벤을 캡처합니다*.


|  입력  |  출력  | 
| --- | --- | 
|  ![조명이 켜진 클럭 얼굴이 있는 고딕 아키텍처를 보여주는 Big Ben 클럭 타워입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-conservative-upscale.jpg)  |  ![조명이 켜진 클럭 얼굴이 있는 고딕 아키텍처를 보여주는 Big Ben 클럭 타워입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-conservative-upscale.jpg)  | 

### Fast Upscale
<a name="stable-image-services-7"></a>

Fast Upscale은 예측 및 생성형 AI를 사용하여 이미지 해상도를 4배 높입니다. 이 가볍고 빠른 서비스는 압축된 이미지의 품질을 개선하는 데 이상적이며 소셜 미디어 게시물 및 기타 애플리케이션에 적합합니다.

빠른 확장에는 다음과 같은 필수 파라미터가 있습니다.
+ **image** – (문자열) 확장할 Base64 이미지입니다. 너비는 32\~1,536픽셀이어야 합니다. 높이는 32\~1,536픽셀이어야 합니다. 총 픽셀 수는 1,024\~1,048,576픽셀이어야 합니다. 지원되는 형식: jpeg, png, webp.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 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)
```

------

다음 표에는 Fast Upscale 작업의 입력 및 출력 이미지가 나와 있습니다.


|  입력  |  출력  | 
| --- | --- | 
|  ![조명이 켜진 클럭 얼굴이 있는 고딕 아키텍처를 보여주는 Big Ben 클럭 타워입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-fast-upscale.jpg)  |  ![조명이 켜진 클럭 얼굴이 있는 고딕 아키텍처를 보여주는 Big Ben 클럭 타워입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-fast-upscale.jpg)  | 

## 편집
<a name="stable-image-services-edit"></a>

다음 섹션에서는 Stability AI Image Services 편집에 대해 설명합니다.

### 인페인팅
<a name="stable-image-services-8"></a>

인페인팅은 마스크 이미지의 콘텐츠를 기반으로 지정된 영역을 채우거나 새 콘텐츠로 대체하여 이미지를 지능적으로 수정합니다.

인페인팅에는 다음과 같은 필수 파라미터가 있습니다.
+ **프롬프트** - 출력 이미지에서 보려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다. 최소 0자 및 최대 10,000자입니다.
+ **image** – (문자열) 인페인트할 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.

다음 파라미터는 선택적입니다.
+ **style\_preset** - (문자열) 이미지 모델을 특정 스타일로 안내합니다. 열거형: 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, tile-texture.
+ **negative\_prompt** – (문자열) 출력 이미지에서 보고 싶지 않은 내용을 설명하는 텍스트 흐림입니다. 이는 고급 기능입니다. 최대 10,000자입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **mask** – (문자열) 픽셀 단위로 인페인팅 프로세스의 강도를 제어합니다. 두 번째 이미지(이 파라미터로 전달됨) 또는 이미지 파라미터의 알파 채널을 통해 제어할 수 있습니다.
  + **마스크 통과** -이 파라미터에 전달되는 이미지는 주어진 픽셀이 얼마나 어둡거나 밝는지에 따라 어떤 픽셀에서든 인페인팅 강도를 나타내는 검은색 및 흰색 이미지여야 합니다. 완전히 검은색 픽셀은 인페인팅 강도가 없음을 나타내고 완전히 흰색 픽셀은 최대 강도를 나타냅니다. 마스크의 크기가 이미지 파라미터와 다른 경우 마스크의 크기가 자동으로 조정됩니다.
  + **알파 채널 지원** - 명시적 마스크를 제공하지 않으면 이미지 파라미터의 알파 채널에서 마스크가 파생됩니다. 투명 픽셀은 페인팅되고 불투명 픽셀은 보존됩니다. 알파 채널이 있는 이미지가 마스크와 함께 제공되는 경우 마스크가 우선합니다.
+ **grow\_mask** - 마스크 가장자리를 지정된 픽셀 수만큼 모든 방향으로 바깥쪽으로 자릅니다. 마스크 주위의 확장된 영역이 흐려져 인페인팅된 콘텐츠와 원본 이미지 간의 전환을 원활하게 하는 데 도움이 될 수 있습니다. 범위: 0\~20. 기본값은 5입니다. 인페인팅된 콘텐츠 주위에 이음매가 보이거나 가장자리가 거칠게 보이면 이 파라미터를 사용해 보세요. 과도한 증가는 마스크의 세부 정보를 가리거나 근처의 마스킹 처리된 영역을 병합할 수 있습니다.

------
#### [ 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)
```

------

다음 표에는 인페인팅 작업의 입력 및 출력 이미지가 나와 있습니다.


|  Input  |  Mask  |  출력  | 
| --- | --- | --- | 
|  ![블루 3조각 슈트를 착용한 남성이 도시의 풍경을 배경으로 밤에 야외에 서 있습니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-image-inpaint.jpg)  |  ![인페인팅을 위해 선택한 영역을 보여주는 마스크 이미지로, 선택한 리전이 강조 표시되어 있습니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/mask-image-inpaint.png)  |  ![밤에 도시의 풍경을 배경으로 밝은 파란색 요소가 있는 미래 지향적 갑옷을 착용한 사람.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-image-inpaint.jpg)  | 

### Outpaint
<a name="stable-image-services-9"></a>

Outpaint는 이미지에 추가 콘텐츠를 삽입하여 어떤 방향으로든 공간을 채웁니다. 이미지 콘텐츠를 확장하는 다른 자동 또는 수동 방법은 눈에 보이는 아티팩트를 남길 수 있습니다. Outpaint 서비스는 원본 이미지가 편집되었다는 표시를 최소화합니다.

Outpaint에는 다음과 같은 필수 파라미터가 있습니다.
+ **image** – (문자열) 아웃페인트할 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.
**참고**  
하나 이상의 아웃페인트 방향(왼쪽, 오른쪽, 위 또는 아래)에 0이 아닌 값을 제공해야 합니다. 최상의 결과를 얻으려면 아웃페인팅 방향을 선택할 때 원본 이미지의 구성과 내용을 고려하세요.

다음 파라미터는 선택적입니다.
+ **프롬프트** - 출력 이미지에서 보려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다. 최소 0자 및 최대 10,000자입니다.
+ **style\_preset** - (문자열) 이미지 모델을 특정 스타일로 안내합니다. 열거형: 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, tile-texture.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **창의성** - (숫자) 이미지를 아웃페인팅할 때 모델이 얼마나 창의적이어야 하는지를 나타냅니다. 값이 높을수록 아웃페인팅 중에 이미지에 더 창의적인 콘텐츠가 추가됩니다. 범위는 0.1\~1.0입니다. 기본값은 0.5입니다.
+ **left** - (정수) 이미지 왼쪽에서 아웃페인트할 픽셀 수입니다. 0이 아닌 값으로 출력 방향을 하나 이상 제공해야 합니다. 범위는 0\~2000입니다. Detault 0.
+ **오른쪽** - (정수) 이미지 오른쪽에 아웃페인트할 픽셀 수입니다. 0이 아닌 값으로 출력 방향을 하나 이상 제공해야 합니다. 범위는 0\~2000입니다. Detault 0.
+ **up** - (정수) 이미지 상단에서 아웃페인트할 픽셀 수입니다. 0이 아닌 값으로 출력 방향을 하나 이상 제공해야 합니다. 범위는 0\~2000입니다. Detault 0.
+ **down** - (정수) 이미지 하단에서 아웃페인트할 픽셀 수입니다. 0이 아닌 값으로 출력 방향을 하나 이상 제공해야 합니다. 범위는 0\~2000입니다. Detault 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)
```

------

다음 표에는 Outpaint 작업의 입력 및 출력 이미지가 나와 있습니다.


|  입력  |  출력  | 
| --- | --- | 
|  ![조명이 켜진 클럭 얼굴이 있는 고딕 아키텍처를 보여주는 Big Ben 클럭 타워입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-image-outpaint.jpg)  |  ![구름이 많은 하늘에 대한 고딕 아키텍처를 갖춘 빅 벤 클럭 타워입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-image-outpaint.jpg)  | 

### 검색 및 색상 재지정
<a name="stable-image-services-10"></a>

검색 및 색상 재지정을 사용하면 프롬프트를 사용하여 이미지에서 특정 객체의 색상을 변경할 수 있습니다. 이 서비스는 마스크가 필요하지 않은 특정 버전의 인페인팅입니다. 자동으로 객체를 분할하고 프롬프트에서 요청한 색상을 사용하여 다시 색상을 지정합니다.

검색 및 색상 재지정에는 다음과 같은 필수 파라미터가 있습니다.
+ **프롬프트** - 출력 이미지에서 보려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다. 최소 0자 및 최대 10,000자입니다.
+ **image** - (문자열) 다시 색상을 지정할 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.
+ **select\_prompt** – (문자열) 이미지에서 검색할 항목에 대한 간략한 설명입니다. 최대 10,000자입니다.

다음 파라미터는 선택적입니다.
+ **style\_preset** - (문자열) 이미지 모델을 특정 스타일로 안내합니다. 열거형: 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, tile-texture.
+ **negative\_prompt** – (문자열) 출력 이미지에서 보고 싶지 않은 내용을 설명하는 텍스트 흐림입니다. 이는 고급 기능입니다. 최대 10,000자입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **grow\_mask** - 마스크 가장자리를 지정된 픽셀 수만큼 모든 방향으로 바깥쪽으로 자릅니다. 마스크 주위의 확장된 영역이 흐려져 인페인팅된 콘텐츠와 원본 이미지 간의 전환을 원활하게 하는 데 도움이 될 수 있습니다. 범위: 0\~20. 기본값은 5입니다. 인페인팅된 콘텐츠 주위에 이음매가 보이거나 가장자리가 거칠게 보이면 이 파라미터를 사용해 보세요. 과도한 증가는 마스크의 세부 정보를 가리거나 근처의 마스킹 처리된 영역을 병합할 수 있습니다.

------
#### [ 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)
```

------

다음 표에는 검색 및 리컬러 작업의 입력 및 출력 이미지가 나와 있습니다. 사용되는 프롬프트는 *분홍색 자켓*입니다.


|  입력  |  출력  | 
| --- | --- | 
|  ![눈 덮인 산 환경에서 배낭과 함께 선글라스와 블루 패딩 재킷을 착용한 사람.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-search-recolor.jpg)  |  ![눈 덮인 산 환경에서 배낭과 함께 선글라스와 보라색 겨울 자켓을 착용한 사람.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-search-recolor.jpg)  | 

### 검색 및 교체
<a name="stable-image-services-11"></a>

검색 및 교체를 사용하면 검색 프롬프트를 사용하여 대체할 간단한 언어로 객체를 식별할 수 있습니다. 서비스는 자동으로 객체를 분할하고 마스크 없이 프롬프트에서 요청된 객체로 바꿉니다.

검색 및 교체에는 다음과 같은 필수 파라미터가 있습니다.
+ **프롬프트** - 출력 이미지에서 보려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다. 최소 0자 및 최대 10,000자입니다.
+ **image** - (문자열) 다시 색상을 지정할 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.
+ **search\_prompt** – (문자열) 이미지에서 인페인트할 항목에 대한 간략한 설명입니다. 최대 10,000자입니다.

다음 파라미터는 선택적입니다.
+ **style\_preset** - (문자열) 이미지 모델을 특정 스타일로 안내합니다. 열거형: 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, tile-texture.
+ **negative\_prompt** – (문자열) 출력 이미지에서 보고 싶지 않은 내용을 설명하는 텍스트 흐림입니다. 이는 고급 기능입니다. 최대 10,000자입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **grow\_mask** - 마스크 가장자리를 지정된 픽셀 수만큼 모든 방향으로 바깥쪽으로 자릅니다. 마스크 주위의 확장된 영역이 흐려져 인페인팅된 콘텐츠와 원본 이미지 간의 전환을 원활하게 하는 데 도움이 될 수 있습니다. 범위: 0\~20. 기본값은 5입니다. 인페인팅된 콘텐츠 주위에 이음매가 보이거나 가장자리가 거칠게 보이면 이 파라미터를 사용해 보세요. 과도한 증가는 마스크의 세부 정보를 가리거나 근처의 마스킹 처리된 영역을 병합할 수 있습니다.

------
#### [ 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)
```

------

다음 표에는 검색 및 바꾸기 작업의 입력 및 출력 이미지가 나와 있습니다. 사용되는 프롬프트는 *자켓*입니다.


|  입력  |  출력  | 
| --- | --- | 
|  ![백그라운드에서 가을 나뭇잎이 있는 야외에서 주황색 야외활동을 하는 여성.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-search-replace.jpg)  |  ![백그라운드에서 가을 나뭇잎이 있는 야외에서 폴리브 자켓과 화이트 셔츠를 착용한 여성.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-search-replace.jpg)  | 

### Erase
<a name="stable-image-services-12"></a>

지우기를 사용하면 배경 일관성을 지능적으로 유지하면서 이미지 마스크를 사용하여 원치 않는 요소를 제거할 수 있습니다.

지우기에는 다음과 같은 필수 파라미터가 있습니다.
+ **image** – (문자열) 삭제할 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.

다음 파라미터는 선택적입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **mask** – (문자열) 픽셀 단위로 인페인팅 프로세스의 강도를 제어합니다. 두 번째 이미지(이 파라미터로 전달됨) 또는 이미지 파라미터의 알파 채널을 통해 제어할 수 있습니다.
  + **마스크 통과** -이 파라미터에 전달되는 이미지는 주어진 픽셀이 얼마나 어둡거나 밝는지에 따라 어떤 픽셀에서든 인페인팅 강도를 나타내는 검은색 및 흰색 이미지여야 합니다. 완전히 검은색 픽셀은 인페인팅 강도가 없음을 나타내고 완전히 흰색 픽셀은 최대 강도를 나타냅니다. 마스크의 크기가 이미지 파라미터와 다른 경우 마스크의 크기가 자동으로 조정됩니다.
  + **알파 채널 지원** - 명시적 마스크를 제공하지 않으면 이미지 파라미터의 알파 채널에서 마스크가 파생됩니다. 투명 픽셀은 페인팅되고 불투명 픽셀은 보존됩니다. 알파 채널이 있는 이미지가 마스크와 함께 제공되는 경우 마스크가 우선합니다.
+ **grow\_mask** - 마스크 가장자리를 지정된 픽셀 수만큼 모든 방향으로 바깥쪽으로 자릅니다. 마스크 주위의 확장된 영역이 흐려져 인페인팅된 콘텐츠와 원본 이미지 간의 전환을 원활하게 하는 데 도움이 될 수 있습니다. 범위: 0\~20. 기본값은 5입니다. 인페인팅된 콘텐츠 주위에 이음매가 보이거나 가장자리가 거칠게 보이면 이 파라미터를 사용해 보세요. 과도한 증가는 마스크의 세부 정보를 가리거나 근처의 마스킹 처리된 영역을 병합할 수 있습니다.

**참고**  
최적의 지우기 결과를 얻으려면 마스크가 제거할 영역을 정확하게 정의해야 합니다. 명시적 마스크가 제공되지 않은 경우 서비스는 입력 이미지의 알파 채널을 사용합니다. 둘 다 제공된 경우 마스크가 우선합니다.

------
#### [ 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)
```

------

다음 표에는 지우기 작업의 입력 및 출력 이미지가 나와 있습니다.


|  Input  |  Mask  |  출력  | 
| --- | --- | --- | 
|  ![노트북, 개방형 노트북, 펜, 나무 표면에 식초가 있는 정리된 책상의 오버헤드 뷰.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-erase-object.jpg)  |  ![제거를 위해 선택한 객체를 보여주는 마스크 이미지로, 대상 영역이 강조 표시되어 있습니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/mask-erase-object.png)  |  ![노트북, 열린 노트북, 연필 및 블루 저널이 있는 정리된 책상의 오버헤드 뷰.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-erase-object.jpg)  | 

### 배경 제거
<a name="stable-image-services-13"></a>

배경 제거를 사용하면 배경에서 주제를 정확하게 격리할 수 있습니다.

배경 제거에는 다음과 같은 필수 파라미터가 있습니다.
+ **image** – (문자열) 배경을 제거할 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.

다음 파라미터는 선택적입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 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)
```

------

다음 표에는 배경 제거 작업의 입력 및 출력 이미지가 나와 있습니다.


|  입력  |  출력  | 
| --- | --- | 
|  ![백그라운드에서 가을 나뭇잎이 있는 야외에서 주황색 야외활동을 하는 여성.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-remove-background.jpg)  |  ![가로 스트라이프가 있는 배경을 배경으로 주황색의 짜여진 양말을 착용한 사람.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-remove-background.jpg)  | 

## 컨트롤
<a name="stable-image-services-control"></a>

다음 섹션에서는 제어 Stability AI Image Services에 대해 설명합니다.

### 스케치 제어
<a name="stable-image-services-1"></a>

정확한 제어로 대략적인 수작업 스케치를 정교한 출력으로 업그레이드합니다. 스케치가 아닌 이미지의 경우 Control Sketch를 사용하면 이미지 내의 윤곽선과 엣지를 사용하여 최종 모양을 세부적으로 조작할 수 있습니다.

스케치 제어에는 다음과 같은 필수 파라미터가 있습니다.
+ **프롬프트** - 출력 이미지에서 보려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다. 최소 0자 및 최대 10,000자입니다.
+ **image** – (문자열) 스케치의 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.

다음 파라미터는 선택적입니다.
+ **control\_ strength** – (숫자) 이미지가 생성에 미치는 영향 또는 제어 정도입니다. 0에서 1 사이의 부동 소수점으로 표시됩니다. 여기서 0은 최소 영향이고 1은 최대 영향입니다. 기본값은 0.7입니다. 
+ **negative\_prompt** – (문자열) 출력 이미지에서 보고 싶지 않은 내용을 설명하는 텍스트 흐림입니다. 이는 고급 기능입니다. 최대 10,000자입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **style\_preset** - 이미지 모델을 특정 스타일로 안내합니다. 열거형: 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, 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)
```

------

다음 표에는 Control Sketch 호출의 입력 및 출력 이미지가 나와 있습니다. 사용되는 프롬프트는 *산과 강이 근처로 흐르는 배경이 있는 집*입니다.


|  입력  |  출력  | 
| --- | --- | 
|  ![산이 배경에 있는 언덕에 있는 집의 간단한 선 그리기.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-control-sketch.jpg)  |  ![강, 녹색 초원, 기존 건물, 눈으로 덮인 봉우리가 있는 산 계곡입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-control-sketch.jpg)  | 
|   |  | 

### 제어 구조
<a name="stable-image-services-2"></a>

제어 구조를 사용하면 입력 이미지의 구조를 유지하면서 이미지를 생성할 수 있습니다. 이는 장면을 다시 생성하거나 모델에서 캐릭터를 렌더링하는 등의 고급 콘텐츠 생성 시나리오에 특히 유용합니다.

제어 구조에는 다음과 같은 필수 파라미터가 있습니다.
+ **프롬프트** - 출력 이미지에서 보려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다. 최소 0자 및 최대 10,000자입니다.
+ **image** – (문자열) 스케치의 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.

다음 파라미터는 선택적입니다.
+ **control\_ strength** – (숫자) 이미지가 생성에 미치는 영향 또는 제어 정도입니다. 0에서 1 사이의 부동 소수점으로 표시됩니다. 여기서 0은 최소 영향이고 1은 최대 영향입니다. 기본값은 0.7입니다. 
+ **negative\_prompt** – (문자열) 출력 이미지에서 보고 싶지 않은 내용을 설명하는 텍스트 흐림입니다. 이는 고급 기능입니다. 최대 10,000자입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **style\_preset** - 이미지 모델을 특정 스타일로 안내합니다. 열거형: 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, 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)
```

------

다음 표에는 제어 구조 작업의 입력 및 출력 이미지가 나와 있습니다. 사용되는 프롬프트는 *모션이 생성된 초현실 구조가 장면을 비추는 것입니다*.


|  입력  |  출력  | 
| --- | --- | 
|  ![바닥에 줄무늬 조명 패턴을 생성하는 격자형 금속 프레임워크가 있는 터널과 같은 구조입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-control-structure.jpg)  |  ![밝은 벽돌 패턴과 입구에서 날아다니는 스파크가 있는 터널 내부.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-control-structure.jpg)  | 

### 스타일 가이드
<a name="stable-image-services-3"></a>

스타일 가이드를 사용하면 입력 이미지에서 스타일 요소를 추출할 수 있습니다. 이를 사용하여 프롬프트를 기반으로 출력 이미지를 생성하는 방법을 안내합니다. 그 결과 입력 이미지와 동일한 스타일의 새 이미지가 생성됩니다.

스타일 가이드에는 다음과 같은 필수 파라미터가 있습니다.
+ **프롬프트** - 출력 이미지에서 보려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다. 최소 0자 및 최대 10,000자입니다.
+ **image** – (문자열) 스케치의 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.

다음 파라미터는 선택적입니다.
+ **aspect\_ratio** – (문자열) 생성된 이미지의 종횡비를 제어합니다. 이 파라미터는 텍스트 투 이미지 요청에만 유효합니다. 기본값은 1:1입니다. 열거형: 16:9, 1:1, 21:9, 2:3, 3:2, 4:5, 5:4, 9:16, 9:21. 기본값은 1:1입니다.
+ **negative\_prompt** – (문자열) 출력 이미지에서 보고 싶지 않은 내용을 설명하는 텍스트 흐림입니다. 이는 고급 기능입니다. 최대 10,000자입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **fidelity** – (숫자) 출력 이미지의 스타일이 입력 이미지의 스타일과 얼마나 유사한지. 범위: 0\~1. 기본값은 0.5입니다.
+ **style\_preset** - 이미지 모델을 특정 스타일로 안내합니다. 열거형: 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, 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)
```

------

다음 표에는 스타일 가이드 호출의 입력 및 출력 이미지가 나와 있습니다. 사용되는 프롬프트는 *현대 대도시의 와이드 샷*입니다.


|  입력  |  출력  | 
| --- | --- | 
|  ![파란색, 노란색, 녹색, 주황색, 빨간색 브러시 입력을 비롯한 생생한 색상으로 그림을 추상화합니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-style-guide.jpg)  |  ![파란색, 노란색, 녹색, 주황색, 빨간색 색조의 건물이 있는 추상적인 도시 경관.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-style-guide.jpg)  | 

### 스타일 전송
<a name="stable-image-services-4"></a>

스타일 전송을 사용하면 참조 스타일 이미지의 시각적 특성을 대상 이미지에 적용할 수 있습니다. 스타일 가이드 서비스는 입력 이미지에서 스타일 요소를 추출하고 이를 사용하여 프롬프트를 기반으로 출력 이미지를 생성하도록 안내합니다. 스타일 전송은 원래 구성을 유지하면서 기존 콘텐츠를 특별히 변환합니다. 이 도구는 여러 자산에서 일관된 콘텐츠를 생성하는 데 도움이 됩니다.

스타일 전송에는 다음과 같은 필수 파라미터가 있습니다.
+ **init\_image** – (문자열) 스타일을 바꾸려는 제목이 포함된 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.
+ **style\_image** – (문자열) 스타일을 바꾸려는 주제가 포함된 Base64 이미지입니다. 이미지의 모든 측면은 64픽셀 이상이어야 합니다. 총 픽셀 수는 9,437,184픽셀을 초과할 수 없습니다. 이미지 종횡비는 1:2.5 및 2.5:1이어야 합니다. 지원되는 형식: jpeg, png, webp.

다음 파라미터는 선택적입니다.
+ **prompt** - (문자열) 출력 이미지에서 확인하려는 내용입니다. 요소, 색상 및 주제를 명확하게 정의하는 강력하고 설명적인 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다. 지정된 단어의 가중치를 제어하려면 형식(word:weight)을 사용합니다. 여기서 word는 가중치를 제어하려는 단어이고 weight는 값입니다. 값 0과 1.0은 단어를 강조하지 않고 1.1과 2 사이의 값은 단어를 강조했습니다. 예: 하늘이 선명한 (blue:0.3) 및 (green:1.8)이라면 파란색과 녹색이지만 파란색보다 녹색이 더 진한 하늘을 나타냅니다.
+ **negative\_prompt** – (문자열) 출력 이미지에서 보고 싶지 않은 내용을 설명하는 텍스트 흐림입니다. 이는 고급 기능입니다. 최대 10,000자입니다.
+ **seed** – (숫자) 생성의 '무작위성'을 안내하는 데 사용되는 특정 값입니다. (임의 시드를 사용하려면 이 파라미터를 생략하거나 0을 전달합니다.) 범위: 0\~4294967294. 기본값은 0입니다.
+ **output\_format** – (문자열) 생성된 이미지의 콘텐츠 유형을 대체합니다. 열거형: jpeg, png, webp. 기본값은 png입니다.
+ **composition\_fidelity** – (숫자) 출력 이미지의 스타일이 입력 이미지의 스타일과 얼마나 유사한지. 범위: 0\~1. 기본값은 0.9입니다. 
+ **style\_ strength** – (숫자) 노이즈 제거라고도 하는이 파라미터는 style\_image 파라미터가 생성된 이미지에 미치는 영향을 제어합니다. 값이 0이면 입력과 동일한 이미지가 생성됩니다. 값이 1이면 이미지를 전혀 전달하지 않은 것처럼 됩니다. 범위: 0\~1. 기본값은 1입니다.
+ **change\_ strength** – (숫자) 원본 이미지가 얼마나 변경되어야 하는지. 범위: 0.1\~1. 기본값은 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)
```

------

다음 표에는 스타일 전송 직접 호출의 입력 및 출력 이미지가 나와 있습니다.


|  Input  |  스타일  |  출력  | 
| --- | --- | --- | 
|  ![머리카락이 흐르는 여성과 머리카락이 늘어선 의상, 머리로 손을 든 여성 조각상.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/input-style-transfer.jpg)  |  ![야간 도시 풍경의 건물을 연결하는 밝은 파란색 선 네트워크입니다.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/style-style-transfer.jpg)  |  ![도시 환경의 청록색 조명이 있는 클래식 동상과 배경의 최신 아키텍처.](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/stable-image-services/output-style-transfer.jpg)  | 