颜色调节简介

在这个笔记本中,我们将重点关注颜色调节功能,它允许我们指定精确的颜色值来控制生成图像的调色板。此外,我们还可以提供参考图像来生成将指定调色板与参考图像的样式相结合的视觉效果。

用例

OctankFashion知道他们的客户非常关心将完美的婚礼颜色融入到他们特殊日子的服装中。OctankFashion的设计师们很兴奋能够使用AI来帮助他们设计有趣而多彩的配饰,从新的一系列图案领结开始。

先决条件:请先运行00-prerequisites.ipynb中的先决条件。

import io
import json
import base64
import boto3
from botocore.config import Config
from PIL import Image
from utils import (
    save_image,
    plot_color_conditioning,
    plot_images_for_comparison,
    create_color_palette_image,
)
from string import Template

bedrock_runtime_client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    config=Config(
        read_timeout=5 * 60
    ),  # 重要:将读取超时时间增加到5分钟以支持更长的操作。
)
image_generation_model_id = "amazon.nova-canvas-v1:0"
output_dir = "output"

示例1:使用颜色值进行颜色调节

颜色调节功能通过提供以十六进制颜色代码表示的颜色列表,可以控制生成图像的调色板。这对于遵循品牌准则或特定的设计要求很有用。

在下面的代码中,我们定义了一个提示模板,让我们生成多种不同图案的领结。colors列表定义了我们想要融入每个设计的确切颜色。

运行下面的单元格以生成一些领结设计。生成的图像将保存到"output"文件夹。

# 定义提示模板和一组将与模板一起使用的"模式"值。
prompt_template = Template("a patterned bowtie, $pattern, on solid white background")
patterns = ["paisley", "striped", "floral"]

# 定义主要输入参数。
colors = ["#FFFFFF", "#FF9900", "#F2F2F2", "#232F3E"]
seed = 35
generated_images = []

# 为每种模式生成图像。
for index, pattern in enumerate(patterns):

    # 根据调色板生成图像
    body = json.dumps(
        {
            "taskType": "COLOR_GUIDED_GENERATION",
            "colorGuidedGenerationParams": {
                "text": prompt_template.substitute({"pattern": pattern}),
                "colors": colors,
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,  # 要生成的图像数量,最多5张
                "cfgScale": 6.5,  # 提示将被遵循的程度
                "width": 1024,
                "height": 1024,
                "seed": seed,
                "quality": "standard",  # 质量为"standard"或"premium"
            },
        }
    )

    print(f"正在生成第{index + 1}张图像,共{len(patterns)}张...")

    response = bedrock_runtime_client.invoke_model(
        body=body,
        modelId=image_generation_model_id,
        accept="application/json",
        contentType="application/json",
    )

    response_body = json.loads(response.get("body").read())

    base64_images = response_body.get("images")
    image_path = f"{output_dir}/07-color-conditioning_pattern-{pattern}.png"
    save_image(base64_images[0], image_path)
    print(f"图像已保存到{image_path}")

    generated_img = [
        Image.open(io.BytesIO(base64.b64decode(base64_image)))
        for base64_image in base64_images
    ]
    generated_images.append(generated_img[0])

# 显示调色板。
color_palette_image = create_color_palette_image(
    colors, width=400, height=50, border_color="#cccccc", border_width=2
)
display(color_palette_image)

# 绘制比较图像
plot_images_for_comparison(
    generated_images=generated_images,
    labels=patterns,
    prompt=prompt_template.substitute({"pattern": "#pattern"}),
    comparison_mode=True,
    title_prefix="Pattern:",
)

**额外活动:**更改颜色值(最多10个)以定义我们自己的调色板。我们可以使用在线Google颜色选择器选择颜色并获取其十六进制值。尝试编辑样式列表以定义我们自己的样式。

总结

Nova Canvas的颜色调节功能允许客户控制生成图像的调色板,无论是为了遵循品牌风格指南,还是仅仅为了获得更多对最终图像外观的控制权。

我们鼓励用户探索Amazon Bedrock中的这些新功能,以体验创建精确、定制视觉内容的扩展潜力。