

# 图像生成请求和回复结构
<a name="image-gen-req-resp-structure"></a>

**图像生成**  
以下示例展示了不同的图像生成应用场景。每个示例都解释了用于图像生成的字段。

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

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

此请求中使用了以下 `textToImageParams` 字段：
+ `text`（必要）– 用于生成图像的文本提示。提示的长度必须是 1-1024 个字符。
+ `negativeText`（可选）– 用于定义图像内不包含什么内容的文本提示。此值的长度必须是 1-1024 个字符。
+ `style`（可选）– 指定用于生成此图像的风格。有关更多信息，请参阅 [视觉风格](image-gen-styles.md)。

**注意**  
避免在 `text` 和 `negativeText` 值中使用否定词（“无”“不含”“没有”等）。例如，若不想在图像中使用镜子，则不要在 `text` 字段中包含“无镜子”或“没有镜子”，而要在 `negativeText` 字段中使用“镜子”一词。

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

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

此请求中使用了以下 `textToImageParams` 字段：
+ `conditionImage`（必要）– 用于指导所生成图像的布局和构图的 JPEG 或 PNG 图像。图像必须格式化为 Base64 字符串。有关其他要求，请参阅[用于图像生成的输入图像](image-gen-access.md#image-gen-input-images)。
+ `controlMode`（可选）– 指定要使用的调节模式。默认值为“CANNY\_EDGE”。
  + `CANNY_EDGE` – 所生成图像的元素将严格遵循条件图像的突出轮廓或“边缘”。
  + `SEGMENTATION` – 将自动分析条件图像来识别突出的内容形状。这种分析会生成一个分割遮罩，以此来指导图像的生成。最终生成的图像会严格遵循条件图像的布局，但也让模型在每个内容区域的范围内有更多自由发挥的余地。
+ `controlStrength`（可选）– 指定所生成图像的布局和构图与 `conditionImage` 的相似程度。范围是 0 到 1.0，值越低，随机性越大。默认值为 0.7。
+ `text`（必要）– 用于生成图像的文本提示。提示的长度必须是 1-1024 个字符。
+ `negativeText`（可选）– 用于定义图像内不包含什么内容的文本提示。此值的长度必须是 1-1024 个字符。
+ `style`（可选）– 指定用于生成此图像的风格。有关更多信息，请参阅 [视觉风格](image-gen-styles.md)。

**注意**  
避免在 `text` 和 `negativeText` 值中使用否定词（“无”“不含”“没有”等）。例如，若不想在图像中使用镜子，则不要在 `text` 字段中包含“无镜子”或“没有镜子”，而要在 `negativeText` 字段中使用“镜子”一词。

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

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

此请求中使用了以下 `colorGuidedGenerationParams` 字段：
+ `colors`（必要）– 包含最多 10 个颜色代码的列表，用于定义图像所需的调色板。以“\#RRGGBB”形式的十六进制值表示。例如，“\#00FF00”是纯绿色，“\#FCF2AB”是暖黄色。如果未提供 `referenceImage`，则 `colors` 列表的效果最强。否则，列表中的颜色和参考图像中的颜色都会用于最终输出。
+ `referenceImage`（可选）– 用作主题和样式参考的 JPEG 或 PNG 图像。图像的颜色也将与 `colors` 列表中的颜色一起融入最终输出。有关其他要求，请参阅[用于图像生成的输入图像](image-gen-access.md#image-gen-input-images)。
+ `text`（必要）– 用于生成图像的文本提示。提示的长度必须是 1-1024 个字符。
+ `negativeText`（可选）– 用于定义图像内不包含什么内容的文本提示。此值的长度必须是 1-1024 个字符。

**注意**  
避免在 `text` 和 `negativeText` 值中使用否定词（“无”“不含”“没有”等）。例如，若不想在图像中使用镜子，则不要在 `text` 字段中包含“无镜子”或“没有镜子”，而要在 `negativeText` 字段中使用“镜子”一词。

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

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

此请求中使用了以下 `imageVariationParams` 字段：
+ `images`（必要）– 用作参考的 1 到 5 张图像的列表。每张图象都必须为 JPEG 或 PNG 格式，且都编码为 Base64 字符串。有关其他要求，请参阅[用于图像生成的输入图像](image-gen-access.md#image-gen-input-images)。
+ `similarityStrength`（可选）– 指定生成的图像与输入图像的相似程度。有效值在 0.2-1.0 之间，且值越低，随机性越大。
+ `text`（必要）– 用于生成图像的文本提示。提示的长度必须是 1-1024 个字符。如果忽略此字段，模型将移除遮罩区域内的元素，并将之替换为图像背景的无缝扩展。
+ `negativeText`（可选）– 用于定义图像内不包含什么内容的文本提示。此值的长度必须是 1-1024 个字符。

**注意**  
避免在 `text` 和 `negativeText` 值中使用否定词（“无”“不含”“没有”等）。例如，若不想在图像中使用镜子，则不要在 `text` 字段中包含“无镜子”或“没有镜子”，而要在 `negativeText` 字段中使用“镜子”一词。

------

**图像编辑**  
以下示例展示了不同的图像编辑使用案例。每个示例都对用于编辑图像的字段进行了解释。

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

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

此请求中使用了以下 `inPaintingParams` 字段：
+ `image`（必要）– 要修改的 JPEG 或 PNG，且格式化为 Base64 字符串。有关其他要求，请参阅[用于图像生成的输入图像](image-gen-access.md#image-gen-input-images)。
+ `maskPrompt` 或 `maskImage`（必要）– 必须指定 `maskPrompt` 或 `maskImage` 参数，但不能同时指定两者。

  `maskPrompt` 是一种自然语言文本提示，用于描述要编辑的图像区域。

  `maskImage` 是一种图像，用于定义要编辑的图像区域。遮罩图像必须与输入图像的大小相同。要编辑的区域是纯黑色阴影，要忽略的区域是纯白色阴影。不允许在遮罩图像中使用其他颜色。

  请注意，就遮罩图像的颜色要求而言，补绘请求和扩绘请求是相反的。
+ `text`（必要）– 用于描述要在遮罩区域内生成什么内容的文本提示。提示的长度必须是 1-1024 个字符。如果忽略此字段，模型将移除遮罩区域内的元素，并将之替换为图像背景的无缝扩展。
+ `negativeText`（可选）– 用于定义图像内不包含什么内容的文本提示。此值的长度必须是 1-1024 个字符。

**注意**  
避免在 `text` 和 `negativeText` 值中使用否定词（“无”“不含”“没有”等）。例如，若不想在图像中使用镜子，则不要在 `text` 字段中包含“无镜子”或“没有镜子”，而要在 `negativeText` 字段中使用“镜子”一词。

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

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

此请求中使用了以下 `outPaintingParams` 字段：
+ `image`（必要）– 要修改的 JPEG 或 PNG，且格式化为 Base64 字符串。有关其他要求，请参阅[用于图像生成的输入图像](image-gen-access.md#image-gen-input-images)。
+ `maskPrompt` 或 `maskImage`（必要）– 必须指定 `maskPrompt` 或 `maskImage` 参数，但不能同时指定两者。

  `maskPrompt` 是一种自然语言文本提示，用于描述要编辑的图像区域。

  `maskImage` 是一种图像，用于定义要编辑的图像区域。遮罩图像必须与输入图像的大小相同。要编辑的区域是纯黑色阴影，要忽略的区域是纯白色阴影。不允许在遮罩图像中使用其他颜色。

  请注意，就遮罩图像的颜色要求而言，补绘请求和扩绘请求是相反的。
+ `outPaintingMode` – 确定如何解释提供的遮罩。

  `DEFAULT` 用于在遮罩区域和非遮罩区域之间平滑过渡。某些原始像素用作新背景的起点。若希望新背景使用与原始背景相似的颜色时，此模式通常更好。不过，如果提示要求使用与原始背景明显不同的新背景，则可以产生光晕效果。

  `PRECISE` 用于严格遵守遮罩边界。在对背景进行重大更改时，此模式通常会更好。
+ `text`（必要）– 用于描述要在遮罩区域内生成什么内容的文本提示。提示的长度必须是 1-1024 个字符。如果忽略此字段，模型将移除遮罩区域内的元素，并将之替换为图像背景的无缝扩展。
+ `negativeText`（可选）– 用于定义图像内不包含什么内容的文本提示。此值的长度必须是 1-1024 个字符。

**注意**  
避免在 `text` 和 `negativeText` 值中使用否定词（“无”“不含”“没有”等）。例如，若不想在图像中使用镜子，则不要在 `text` 字段中包含“无镜子”或“没有镜子”，而要在 `negativeText` 字段中使用“镜子”一词。

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

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

此请求中使用了以下 `backgroundRemovalParams` 字段：
+ `image`（必要）– 要修改的 JPEG 或 PNG，且格式化为 Base64 字符串。有关其他要求，请参阅[用于图像生成的输入图像](image-gen-access.md#image-gen-input-images)。

`BACKGROUND_REMOVAL` 任务会返回具有全 8 位透明度的 PNG 图像。这种格式让您可以干净流畅地分离出前景对象，并且可以轻松地在图像编辑应用程序、演示文稿或网站中将该图像与其他元素进行合成。使用简单的自定义代码即可轻松地将背景更改为纯色。

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

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

此请求中使用了以下 `virtualTryOnParams` 字段：
+ `sourceImage`（必要）– 要修改的 JPEG 或 PNG，且格式化为 Base64 字符串。有关其他要求，请参阅[用于图像生成的输入图像](image-gen-access.md#image-gen-input-images)。
+ `referenceImage`（必需）– 包含要叠加到源图像上的对象的 JPEG 或 PNG，格式化为 Base64 字符串。有关其他要求，请参阅[用于图像生成的输入图像](image-gen-access.md#image-gen-input-images)。
+ `maskType`（必需）– 指定遮罩是以图像、提示还是服装遮罩的形式提供。
+ `imageBasedMask` – 当 `maskType` 为 `"IMAGE"` 时必需。

  `maskImage` 是一种图像，用于定义要编辑的图像区域。遮罩图像必须与输入图像的大小相同。要编辑的区域是纯黑色阴影，要忽略的区域是纯白色阴影。不允许在遮罩图像中使用其他颜色。
+ `garmentBasedMask` – 当 `maskType` 为 `"GARMENT"` 时必需。
  + `maskShape`（可选）– 定义遮罩边框形状。边框形状和大小可能会影响参考图像转移到源图像的方式。
  + `garmentClass`（必填）– 定义要转移的服装。此参数允许模型专注于参考图像中要转移的特定部分。
  + `garmentStyling`（可选）– 为模型提供某些服装的风格提示。`longSleeveStyle` 和 `tuckingStyle` 参数仅适用于上装。`outerLayerStyle` 参数仅适用于外层上装。
+ `promptBasedMask`（必需）– 当 `maskType` 为 `"PROMPT"` 时必需。
  + `maskShape`（可选）– 定义遮罩边框形状。边框形状和大小可能会影响参考图像转移到源图像的方式。
  + `maskPrompt`（必需）– 一种自然语言文本提示，用于描述要编辑的图像区域。
+ `maskExclusions`（可选）– 当在源图像中检测到人时，这些参数将决定他们的身体姿势、手部和脸部应在输出图像中保留还是应重新生成。
+ `mergeStyle`（可选）– 确定如何将源图像和参考图像拼接在一起。每种合并风格都采用不同的方法来将元素拼接在一起来创建最终图像，并且每种合并风格都有自己的优点和取舍。
  + `"BALANCED"` – 保留原始图像中所有未被遮罩的像素，确保它们与原始图像 100% 准确。在某些情况下，输出图像中会有轻微的颜色或纹理不匹配，呈现为遮罩形状的“幽灵”图像。当图像中有人站在纯色或纹理均匀的背景上时，最有可能发生这种情况。为了避免这种情况，您可以使用 `"SEAMLESS"` 合并风格。
  + `"SEAMLESS"` – 确保最终图像中的遮罩和非遮罩图像区域之间永远不会有明显的接缝。缺点是这种模式会导致图像中的所有像素都会略微改变，有时可能导致图像中非遮罩区域的部分细致细节消散。
  + `"DETAILED"` – 可以显著改善徽标和文本等细致细节，尤其是当遮罩区域与整体图像相比较小时。为实现这一目标，该模型通过在严格裁剪后仅包括遮罩区域且分辨率较高的原始图像版本上进行补绘，然后再将结果合并回原始图像。与使用 `"BALANCED"` 模式时一样，此模式有时会产生可见的接缝。
+ `returnMask`（可选）– 指定遮罩图像是否将与输出图像一起返回。

------

**响应正文**  
回复正文会包含以下一个或多个字段：

```
{
    "images": "images": string[] (list of Base64 encoded images),
    "maskImage": string (Base64 encoded image),
    "error": string
}
```
+ `images` – 成功时会返回一个由 Base64 编码字符串组成的列表，这些字符串表示生成的每一张图像。该列表中包含的图像数量并不一定与请求的图像数量相同。如果个别图像不符合 AWS 负责任的人工智能（RAI）内容审核政策，则可能会在生成后被屏蔽。仅会返回符合 RAI 政策的图像。
+ `maskImage` – 当您指定遮罩图像应与输出一起返回时，将会返回到此位置。
+ `error` – 如果有任何图像不符合 RAI 政策，则会返回此字段。否则，回复中会忽略此字段。

`imageGenerationConfig` 字段适用于所有任务类型，但 `BACKGROUND_REMOVAL` 除外。其为可选字段，且包含以下字段。如果忽略此对象，则会使用默认配置。
+ `width` 和 `height`（可选）– 定义所生成图像的大小和宽高比。二者的默认值都为 1024。

  不应为 `"INPAINTING"`、`"OUTPAINTING"` 或 `"VIRTUAL_TRY_ON"` 任务类型提供 `width` 和 `height` 值。

  有关受支持分辨率的完整列表，请参阅[支持的图像分辨率](image-gen-access.md#image-gen-resolutions)。
+ `quality`（可选）– 指定生成图像时所使用的质量 –“标准”（默认）或“优质”。
+ `cfgScale`（可选）– 指定模型遵守提示的严格程度。值域为 1.1-10（含），默认值为 6.5。
  + 低值（1.1-3）– AI 的创作自由度更高，可能更具美感，但对比度较低，结果也不太严格符合提示
  + 中等值（4-7）– 折中的方法，通常建议大多数生成场景使用
  + 高值（8-10）– 严格遵守提示，可以生成更精确的结果，但有时会牺牲自然美学并增加色彩饱和度
+ `numberOfImages`（可选）– 要生成的图像数量。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/nova/latest/userguide/image-gen-req-resp-structure.html)
+ `seed`（可选）– 确定生成过程的初始噪声设置。在保持其余参数不变的情况下更改种子值，将生成一张全新的图像，该图像仍符合提示、尺寸和其他设置要求。为了找到完美的图像，通常会尝试多种种子值。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/nova/latest/userguide/image-gen-req-resp-structure.html)

**重要**  
分辨率（`width` 和 `height`）、`numberOfImages` 和 `quality`，都会对生成图像所需的时间产生影响。AWS SDK 的默认 `read_timeout` 为 60 秒，如果这些参数取值较高，就很容易超出该时间限制。因此，建议将调用操作的 `read_timeout` 增加到至少 5 分钟（300 秒）。以下代码示例演示了如何执行此操作。