1. 文档中心
  2. 比卜创造 Micro:bit
  3. API 参考
  4. 图像

图像

Image 类用于创建可在 LED 点阵上显示的图像。创建后可通过 显示屏 显示:

display.show(Image.HAPPY)
笑脸示意
笑脸示意

构造方式

  • Image() — 空白 5×5 图像
  • Image(string) — 从字符串解析;单字符可生成对应字形
  • Image(width, height) — 指定尺寸的空白图像
  • Image(width, height, buffer) — 从缓冲区初始化

类 Image

从字符串构造

字符串由 0–9 组成,描述各 LED 亮度;行末用冒号 : 或换行 \n 分隔:

image = Image("90009:"
              "09090:"
              "00900:"
              "09090:"
              "90009")

上述示例为 5×5 的 X 形图案。

从尺寸与缓冲区构造

Image(2, 2, b'\x08\x08\x08\x08')
# 或
Image(2, 2, bytearray([9, 9, 9, 9]))

创建 2×2 全亮图像。buffer 不可使用关键字参数传入。

width()

返回值:图像列数。

height()

返回值:图像行数。

set_pixel(x, y, value)

设置第 x 列、第 y 行像素亮度(0–9)。对内置只读图像(如 Image.HEART)调用会抛异常。

get_pixel(x, y)

返回值:指定像素亮度(0–9)。

shift_left(n)

返回值:向左平移 n 列后的新图像。

shift_right(n)

返回值:向右平移,等价于 shift_left(-n)。

shift_up(n)

返回值:向上平移 n 行后的新图像。

shift_down(n)

返回值:向下平移,等价于 shift_up(-n)。

crop(x, y, w, h)

返回值:从 (x, y) 起裁剪宽 w、高 h 的新图像。

copy()

返回值:图像的完整副本。

invert()

返回值:反转各像素亮度后的新图像。

fill(value)

将所有像素设为 value(0–9)。对内置只读图像调用会抛异常。

blit(src, x, y, w, h, xdest=0, ydest=0)

将 src 中矩形区域 (x, y, w, h) 复制到本图像的 (xdest, ydest)。源矩形超出部分视为 0。

shift_* 与 crop() 在内部可用 blit() 实现。

内置图像

Image 类提供大量预设图案,例如:

  • 表情:Image.HEART、Image.HAPPY、Image.SAD、Image.ANGRY 等
  • 时钟:Image.CLOCK1 … Image.CLOCK12
  • 箭头:Image.ARROW_N、Image.ARROW_E 等
  • 其他:Image.RABBIT、Image.BUTTERFLY、Image.GHOST 等

完整列表见 API 速览。

分组列表:

  • Image.ALL_CLOCKS — 所有时钟帧
  • Image.ALL_ARROWS — 所有箭头

运算

repr(image)   # 紧凑字符串
str(image)    # 可读字符串
image1 + image2   # 逐像素亮度相加
image * n         # 亮度乘以 n

示例

自定义心形动画:

from bibo import *

frames = [Image.HEART, Image.HEART_SMALL]
while True:
    for frame in frames:
        display.show(frame)
        sleep(300)

在比卜创造 Python 编辑器中烧录即可在点阵上看到跳动的心形。