イメージ
Image クラスはデバイス LED マトリクスに容易に表示できるイメージを作成するために使います。予め組み込まれているイメージオブジェクトを display API で表示することもできます:
display.show(Image.HAPPY)
イメージを作るには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)
x列y行のピクセルの明るさをvalueに設定します。明るさは 0 (暗い) から 9 (明るい)までの整数値で指定します。このメソッドは、
Image.HEARTのような読取り専用の内蔵イメージに対して呼び出すと例外を起こします。
- get_pixel(x, y)
x列y行のピクセルの明るさを 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)
x列y行のピクセルから始まってw幅h高さ分をトリミングした新しいイメージを返します。
- 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 倍した新しい画像を作成します。