イメージ

Image クラスはデバイス LED マトリクスに容易に表示できるイメージを作成するために使います。予め組み込まれているイメージオブジェクトを display API で表示することもできます:

display.show(Image.HAPPY)
_images/image-smile.png

イメージを作るには4つの方法があります:

  • Image() - 空の 5x5 イメージを作成
  • Image(string) - 1文字がそのグリフを表す文字列を解析してイメージを作成
  • Image(width, height) - 与えたサイズの空のイメージを作成
  • Image(width, height, buffer) - 与えたバッファからイメージを作成

クラス

class microbit.Image(string)
class microbit.Image(width=None, height=None, buffer=None)

string を指定した場合、引数の文字列はイメージを記述した 0-9 の数字を複数行に配置したものになります。たとえば次のものは X を 5x5 のイメージを作成します:

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

行の終わりはコロンで示します。行の終わりには次のように改行文字(n)を使うこともできます:

image = Image("90009\n"
              "09090\n"
              "00900\n"
              "09090\n"
              "90009")

もう1つの指定方法では width 列と height 行の空イメージを作成します。オプションの buffer は、イメージを初期化するためのもので、0-9 の整数値を width × height 個並べた配列を指定します:

Image(2, 2, b'\x08\x08\x08\x08')

または

Image(2, 2, bytearray([9,9,9,9]))

は、2 x 2 のピクセルイメージを最大輝度で作成します。

注釈

キーワード引数を buffer に渡すことはできません。

width()

イメージの列数を返します。

height()

イメージの行数を返します。

set_pixel(x, y, value)

xy 行のピクセルの明るさを value に設定します。明るさは 0 (暗い) から 9 (明るい)までの整数値で指定します。

このメソッドは、 Image.HEART のような読取り専用の内蔵イメージに対して呼び出すと例外を起こします。

get_pixel(x, y)

xy 行のピクセルの明るさを 0-9 の整数値で返します。

shift_left(n)

n 列だけ左にシフトした新しいイメージを返します。

shift_right(n)

image.shift_left(-n) と同じです。

shift_up(n)

n 行だけ上にシフトした新しいイメージを返します。

shift_down(n)

image.shift_up(-n) と同じです。

crop(x, y, w, h)

xy 行のピクセルから始まって wh 高さ分をトリミングした新しいイメージを返します。

copy()

イメージ全体のコピーを返します。

invert()

元のイメージのピクセルの明るさを反転した新しいイメージ返します。

fill(value)

イメージのピクセルの明るさを value に設定します。 value の値は 0 (暗い) から 9 (明るい)までの整数値です。

このメソッドは、 Image.HEART のような読取り専用の内蔵イメージに対して呼び出すと例外を起こします。

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

イメージ src から x, y, w, h で指定する矩形領域を、このイメージの xdest, ydest にコピーします。矩形領域ではあるが元のイメージの外側にあるピクセルは値が 0 であるとして扱います。

shift_left(), shift_right(), shift_up(), shift_down(), crop() はすべて blit() を用いて実現しています。たとえば img.crop(x, y, w, h) は以下で実現しています。

def crop(self, x, y, w, h):
    res = Image(w, h)
    res.blit(self, x, y, w, h)
    return res

属性

Image クラスには、属性として以下の内蔵インスタンスを持っています(属性名はイメージが何であるかを示しています):

  • Image.HEART
  • Image.HEART_SMALL
  • Image.HAPPY
  • Image.SMILE
  • Image.SAD
  • Image.CONFUSED
  • Image.ANGRY
  • Image.ASLEEP
  • Image.SURPRISED
  • Image.SILLY
  • Image.FABULOUS
  • Image.MEH
  • Image.YES
  • Image.NO
  • Image.CLOCK12, Image.CLOCK11, Image.CLOCK10, Image.CLOCK9, Image.CLOCK8, Image.CLOCK7, Image.CLOCK6, Image.CLOCK5, Image.CLOCK4, Image.CLOCK3, Image.CLOCK2, Image.CLOCK1
  • Image.ARROW_N, Image.ARROW_NE, Image.ARROW_E, Image.ARROW_SE, Image.ARROW_S, Image.ARROW_SW, Image.ARROW_W, Image.ARROW_NW
  • Image.TRIANGLE
  • Image.TRIANGLE_LEFT
  • Image.CHESSBOARD
  • Image.DIAMOND
  • Image.DIAMOND_SMALL
  • Image.SQUARE
  • Image.SQUARE_SMALL
  • Image.RABBIT
  • Image.COW
  • Image.MUSIC_CROTCHET
  • Image.MUSIC_QUAVER
  • Image.MUSIC_QUAVERS
  • Image.PITCHFORK
  • Image.XMAS
  • Image.PACMAN
  • Image.TARGET
  • Image.TSHIRT
  • Image.ROLLERSKATE
  • Image.DUCK
  • Image.HOUSE
  • Image.TORTOISE
  • Image.BUTTERFLY
  • Image.STICKFIGURE
  • Image.GHOST
  • Image.SWORD
  • Image.GIRAFFE
  • Image.SKULL
  • Image.UMBRELLA
  • Image.SNAKE
  • Image.SCISSORS

関連するイメージのコレクションもあります。

* ``Image.ALL_CLOCKS``
* ``Image.ALL_ARROWS``

演算子

repr(image)

イメージのコンパクトな文字列表現を得ます。

str(image)

イメージの可読可能な文字列表現を得ます。

image1 + image2

2つのイメージの各ピクセルの明るさを足した新しいイメージを作成します。

image * n

各ピクセルの明るさを n 倍した新しい画像を作成します。