稼働中

マイクロビット(m_03)microbit.Image

Image

前回からの続きになります。

イメージの表示

組込みのイメージオブジェクトなどを display()で表示できます。「HAPPY」は組込のイメージです。組込みイメージの一覧とデータは下方に載せています。


from microbit import *
#HAPPYの表示
display.show(Image.HAPPY)

show(Image.HAPPY)

イメージをリスト形式で表示

イメージをリスト形式のデータとして表示できます。リストデータに文字、数字、組込みイメージが混在しても表示できます。


from microbit import *
A_list = [Image.HAPPY, 'A', Image.SAD]
#mix_list = ["hello!", 1.234, Image.HAPPY]
display.show(A_list, loop=False, delay=500)
display.clear()
sleep(1000)

Image.HAPPY>>’A’>>Image.SADが順次表示されます。mix_listのように文字、数字、イメージが混在しても表示できます。

Image.HAPPY 文字’A'

Image.SAD

ALL_ARROWS(矢印)、ALL_CLOCKS(時計の針)

ALL_ARROWS、ALL_CLOCKSはリスト化された組込みイメージです。確認すると以下のようなデータになっています。


>>> Image.ALL_CLOCKS
(Image('00900:00900:00900:00000:00000:'), Image('00090:00090:00900:00000:00000:'), Image('00000:00099:00900:00000:00000:'), Image('00000:00000:00999:00000:00000:'), Image('00000:00000:00900:00099:00000:'), Image('00000:00000:00900:00090:00090:'), Image('00000:00000:00900:00900:00900:'), Image('00000:00000:00900:09000:09000:'), Image('00000:00000:00900:99000:00000:'), Image('00000:00000:99900:00000:00000:'), Image('00000:99000:00900:00000:00000:'), Image('09000:09000:00900:00000:00000:'))
>>> Image.ALL_ARROWS
(Image('00900:09990:90909:00900:00900:'), Image('00999:00099:00909:09000:90000:'), Image('00900:00090:99999:00090:00900:'), Image('90000:09000:00909:00099:00999:'), Image('00900:00900:90909:09990:00900:'), Image('00009:00090:90900:99000:99900:'), Image('00900:09000:99999:09000:00900:'), Image('99900:99000:90900:00090:00009:'))

リストデータ化されているので、それぞれ


>>> display.show(Image.ALL_ARROWS,1000)
>>> display.show(Image.ALL_CLOCKS,1000)

で確認できます。

#組込みイメージを順次表示
組込みのイメージをリストデータ化すれば順次に確認できます。


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

#A_list = [Image.HAPPY, Image.SAD,Image.YES]

for img in A_list:
    display.show(img)
    sleep(1000)
display.clear()

イメージの文字列表現

repr(image)、str(image)

イメージを文字列にします。どういう場面で使うのかよくわかりません・・。


>>> img1
Image('11111:11111:11111:11111:11111:')

>>> type(img1)
<class 'MicroBitImage'>

>>> repr(img1)
"Image('11111:11111:11111:11111:11111:')"

>>> type(repr(img1))
<class 'str'>

>>> str(img1)
"Image(\n    '11111:'\n    '11111:'\n    '11111:'\n    '11111:'\n    '11111:'\n)"

>>> type(str(img1))
<class 'str'>

※repr、strの使い分けが分かりませんが、上記のようにテータの中身は異なっていました。

>>> from microbit import *
>>> img=Image()
>>> img.fill(9)

#strで文字列にする
>>> smg=str(img)
>>> smg
"Image(\n    '99999:'\n    '99999:'\n    '99999:'\n    '99999:'\n    '99999:'\n)"

#reprで文字列にする
>>> rmg=repr(img)
>>> rmg
"Image('99999:99999:99999:99999:99999:')"

#imgはイメージなのでscroll出来ない、エラーになる
>>> display.scroll(img)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't convert 'MicroBitImage' object to str implicitly

#smg、rmg は文字なのでスクロールします。イメージを文字列にした文字列がスクロール。
>>> display.scroll(smg)
>>> display.scroll(rmg)

イメージの演算

イメージ明るさの足し算、引き算、掛け算ができるようです。

image1 + image2 明るさを足した新しいイメージ
image * n 明るさを n 倍


>>> img1
Image('11111:11111:11111:11111:11111:')
>>> img2
Image('22222:22222:22222:22222:22222:')

>>> img1+img2                               # 足し算
Image('33333:33333:33333:33333:33333:')
>>> 

>>> img1*4                                  # 掛け算
Image('44444:44444:44444:44444:44444:')
>>> 

引き算もできます。 マイナスになると「0」になります。


>>> img1.fill(1)
>>> img2.fill(2)
>>> img3=img1+img2
>>> img3
Image('33333:33333:33333:33333:33333:')
>>> img5=img2+img3
>>> img5
Image('55555:55555:55555:55555:55555:')
>>> img5-img3                               # 引き算できる
Image('22222:22222:22222:22222:22222:')
>>> img3-img5                               # マイナスはない'0'になる
Image('00000:00000:00000:00000:00000:')
>>> 

組込みイメージ一覧

以下のイメージが組込みされています。


Image.ALL_ARROWS	
Image.ALL_CLOCKS	
Image.ANGRY     	Image('90009:09090:00000:99999:90909:')
Image.ARROW_E   	Image('00900:00090:99999:00090:00900:')
Image.ARROW_N   	Image('00900:09990:90909:00900:00900:')
Image.ARROW_NE  	Image('00999:00099:00909:09000:90000:')
Image.ARROW_NW  	Image('99900:99000:90900:00090:00009:')
Image.ARROW_S   	Image('00900:00900:90909:09990:00900:')
Image.ARROW_SE  	Image('90000:09000:00909:00099:00999:')
Image.ARROW_SW  	Image('00009:00090:90900:99000:99900:')
Image.ARROW_W   	Image('00900:09000:99999:09000:00900:')
Image.ASLEEP    	Image('00000:99099:00000:09990:00000:')
Image.BUTTERFLY 	Image('99099:99999:00900:99999:99099:')
Image.CHESSBOARD	Image('09090:90909:09090:90909:09090:')
Image.CLOCK1    	Image('00090:00090:00900:00000:00000:')
Image.CLOCK2    	Image('00000:00099:00900:00000:00000:')
Image.CLOCK3    	Image('00000:00000:00999:00000:00000:')
Image.CLOCK4    	Image('00000:00000:00900:00099:00000:')
Image.CLOCK5    	Image('00000:00000:00900:00090:00090:')
Image.CLOCK6    	Image('00000:00000:00900:00900:00900:')
Image.CLOCK7    	Image('00000:00000:00900:09000:09000:')
Image.CLOCK8    	Image('00000:00000:00900:99000:00000:')
Image.CLOCK9    	Image('00000:00000:99900:00000:00000:')
Image.CLOCK10   	Image('00000:99000:00900:00000:00000:')
Image.CLOCK11   	Image('09000:09000:00900:00000:00000:')
Image.CLOCK12   	Image('00900:00900:00900:00000:00000:')
Image.CONFUSED  	Image('00000:09090:00000:09090:90909:')
Image.COW       	Image('90009:90009:99999:09990:00900:')
Image.DIAMOND   	Image('00900:09090:90009:09090:00900:')
Image.DIAMOND_SMALL	Image('00000:00900:09090:00900:00000:')
Image.DUCK      	Image('09900:99900:09999:09990:00000:')
Image.FABULOUS  	Image('99999:99099:00000:09090:09990:')
Image.GHOST     	Image('99999:90909:99999:99999:90909:')
Image.GIRAFFE   	Image('99000:09000:09000:09990:09090:')
Image.HAPPY     	Image('00000:09090:00000:90009:09990:')
Image.HEART     	Image('09090:99999:99999:09990:00900:')
Image.HEART_SMALL	Image('00000:09090:09990:00900:00000:')
Image.HOUSE     	Image('00900:09990:99999:09990:09090:')
Image.MEH       	Image('09090:00000:00090:00900:09000:')
Image.MUSIC_CROTCHET	Image('00900:00900:00900:99900:99900:')
Image.MUSIC_QUAVER  	Image('00900:00990:00909:99900:99900:')
Image.MUSIC_QUAVERS 	Image('09999:09009:09009:99099:99099:')
Image.NO            	Image('90009:09090:00900:09090:90009:')
Image.PACMAN        	Image('09999:99090:99900:99990:09999:')
Image.PITCHFORK     	Image('90909:90909:99999:00900:00900:')
Image.RABBIT        	Image('90900:90900:99990:99090:99990:')
Image.ROLLERSKAT    	Image('00099:00099:99999:99999:09090:')
Image.SAD           Image('00000:09090:00000:09990:90009:')
Image.SILLY     	Image('90009:00000:99999:00909:00999:')
Image.SKULL     	Image('09990:90909:99999:09990:09990:')
Image.SMILE     	Image('00000:00000:00000:90009:09990:')
Image.SNAKE     	Image('99000:99099:09090:09990:00000:')
Image.SQUARE    	Image('99999:90009:90009:90009:99999:')
Image.SQUARE_SMALL	Image('00000:09990:09090:09990:00000:')
Image.STICKFIGURE	Image('00900:99999:00900:09090:90009:')
Image.SURPRISED 	Image('09090:00000:00900:09090:00900:')
Image.SWORD     	Image('00900:00900:00900:09990:00900:')
Image.TARGET       	Image('00900:09990:99099:09990:00900:')
Image.TORTOISE  	Image('00000:09990:99999:09090:00000:')
Image.TRIANGLE  	Image('00000:00900:09090:99999:00000:')
Image.TRIANGLE_LEFT	Image('90000:99000:90900:90090:99999:')
Image.TSHIRT    	Image('99099:99999:09990:09990:09990:')
Image.UMBRELLA  	Image('09990:99999:00900:90900:09900:')
Image.XMAS      	Image('00900:09990:00900:09990:99999:')
Image.YES       	Image('00000:00009:00090:90900:09000:')

まとめ

microbitモジュールのImageについて前回からの残件について記載しました。明るさの演算ができるのは面白い気がしました。文字も簡単にImageでデータ化できるので便利かもしれません。