图像
使用此组件在设备上存储图形图像,然后可以在兼容的显示器上绘制这些图像。
如需显示运行时下载的图像,请参阅 在线图像 组件。
image: - file: "image.png" type: binary id: my_image resize: 100x100image: - file: mdi:alert-outline id: alert type: grayscale transparency: alpha_channel resize: 80x80image: defaults: type: rgb565 resize: 200x162 images: - file: https://media.esphome.io/logo/logo.png id: esphome_logo-
file (必需, string):
-
本地文件: 图像文件的路径(相对于 .yaml 文件所在位置)。
-
Material Design 图标: 以
mdi:icon-name格式指定 Material Design 图标 ID,该图标将自动下载并添加到配置中。 -
Material Design Light 图标: 以
mdil:icon-name格式指定 Material Design Light 图标 ID,该图标将自动下载并添加到配置中。 -
Memory 图标: 以
memory:icon-name格式指定 Memory 图标 ID,该图标将自动下载并添加到配置中。 -
远程文件: 图像文件的 URL。
-
-
id (必需, ID): 用于在显示代码中引用此图像的 ID。
-
resize (可选, string): 如果设置,将调整图像大小以适应给定的尺寸
宽度x高度, 并保持纵横比。 -
type (必需): 指定图像的内部编码方式。
-
BINARY: 两种颜色,适用于单色显示器或彩色显示器中的双色图像。每个像素使用 1 位, 每字节 8 个像素。仅支持chroma_key透明度。 -
GRAYSCALE: 全灰度。每个像素使用 8 位,每字节 1 个像素。 -
RGB565: 有损 RGB 颜色存储。每个像素使用 2 字节,带 alpha 通道时为 3 字节。 -
RGB: 完整 RGB 颜色存储。每个像素使用 3 字节,带 alpha 通道时为 4 字节。
-
-
transparency (可选): 如果设置,将考虑输入图像的 alpha 通道。可能的值有
opaque(默认)、chroma_key和alpha_channel。二进制图像不支持alpha_channel。请参阅下方关于透明度的讨论。 -
invert_alpha (可选, 布尔值): 仅适用于二进制和灰度图像,这将反转颜色,即黑白互换。适用于电子墨水屏。默认为
false。 -
dither (可选): 指定用于处理图像的抖动方法,仅用于 GRAYSCALE 和 BINARY 类型图像。默认为
NONE。您可以在 Pillow 文档 和 维基百科 中了解更多信息。NONE: 每个像素转换为其最接近的颜色。FLOYDSTEINBERG: 使用 Floyd-Steinberg 抖动来近似原始图像的亮度级别。
-
byte_order (可选, string): 对于 RGB565 图像,像素被转换为 16 位值。默认情况下,它们将以大端字节顺序存储(MSB 优先), 但您可以通过将
byte_order设置为little_endian来覆盖此设置。选项有big_endian(默认)和little_endian。 不适用于其他图像格式。
对于大多数或所有图像共享相同属性的情况,您可以使用另一种架构风格来提供默认值。在这种情况下,
defaults: 选项将为所有图像提供回退值。使用此格式时,images: 键接受图像定义列表。
image: defaults: type: rgb565 transparency: opaque resize: 100x100 images: - file: "image1.png" id: image1 - file: "image2.png" id: image2 resize: 200x200 # 覆盖默认的 resize 值按类型分组图像
Section titled “按类型分组图像”您可以按类型对图像进行分组以便于管理。当您有许多图像需要以相同方式编码时,这很有用,
并且可以避免为每个图像重复相同的类型。可以使用 defaults: 组来指定类型以外的默认值。
类型名称用作组的键。例如:
image: defaults: resize: 100x100 grayscale: - file: "image1.png" id: image1 - file: "image2.png" id: image2 - file: "image3.png" id: image3
rgb565: - file: "image4.png" id: image4 - file: "image5.png" id: image5此外,可以在类型组内通过使用透明度类型作为键来设置默认透明度类型。
image: rgb565: alpha_channel: - file: "image1.png" id: image1 - file: "image2.png" id: image2 opaque: - file: "image2.png"图像可以在需要图像的 LVGL 配置中使用。有关更多信息,请参阅 LVGL 文档。
要直接在 ESPHome 显示器上显示图像,可以在显示 lambda 中使用 image 方法。
display: - platform: ... # ... lambda: |- // 在位置 [x=0,y=0] 绘制图像 my_image it.image(0, 0, id(my_image));默认情况下,ESPHome 会将图像对齐到左上角。这意味着如果您输入坐标
[0,10] 作为图像位置,图像的左上角将位于 [0,10]。如果您想在显示器右侧
绘制某个图像,选择不同的图像对齐方式有时会很有用。
当您输入 [0,10] 时,实际上是在告诉 ESPHome 将图像的锚点定位在
[0,10]。当使用不同的对齐方式(如 TOP_RIGHT)时,图像将定位在锚点的左侧,
这样,顾名思义,锚点就位于图像的右上角。
display: - platform: ... # ... lambda: |- // 默认左对齐 it.image(0, 0, id(my_image));
// 右边缘对齐 it.image(it.get_width(), 0, id(my_image), ImageAlign::TOP_RIGHT);对于二进制图像,image 方法接受两个额外的颜色参数,可用于修改
用于表示开和关位的颜色。例如:
display: - platform: ... # ... lambda: |- // 在位置 [x=0,y=0] 绘制图像 my_image // 前景色为红色,背景色为蓝色 it.image(0, 0, id(my_image), id(red), id(blue));
// 右边缘对齐 it.image(it.get_width(), 0, id(my_image), ImageAlign::TOP_RIGHT, id(red), id(blue));您也可以使用此方法在双色显示器上反转图像,将 COLOR_OFF 和 COLOR_ON
作为额外参数使用。
默认情况下不使用透明度。如果设置了 transparency: chroma_key,则将使用特定颜色替换图像的任何透明或半透明部分。渲染图像时不会绘制此部分,从而允许背景可见。
如果设置了 transparency: alpha_channel,则图像的每个像素将被分配一个额外的透明度值字节。这主要在使用 LVGL 时很有用,因为 alpha_channel 透明度将实现透明图像与背景的平滑混合。此选项不适用于二进制图像。
使用显示 lambda 图像绘制函数时,这些函数将绘制或不绘制像素,不会与背景进行混合。
带有 chroma_key 透明度的 BINARY 格式实际上将图像转换为每个像素一位的 alpha 蒙版。带有透明度的 GRAYSCALE 图像仅存储 alpha 通道,仍保持每像素 1 字节。