スクラッチくらぶ上級編ーmicro:bit_2

★★★★★ ★★★★★ ★★★★★

BBC micro:bit は小さなコンピュータデバイスです。このデバイスで使える言語に、よく知られた Python があります。BBC micro:bit で動作する Python は MicroPython というものです。

ここではmicro:bit の持つ豊富な機能と、高度なプログラミング言語 MicroPython の組み合わせについて紹介します。

このページは、BBC micro:bit MicroPython ドキュメンテーションを参照しています。 https://microbit-micropython.readthedocs.io/ja/latest/

★★★★★ ★★★★★ ★★★★★

micro:bit(マイクロビット)は、イギリスの放送局BBCで開発された教育用のマイコンボードです。※micro:bitは、micro:bit教育財団の登録商標です。

★★★★★ ★★★★★ ★★★★★

1.チュートリアル

Hello, World!イメージボタン入出力
ミュージックランダム動きの検知ジェスチャー
方角の検知ストレージ音声ネットワーク
無線通信

チュートリアルのページへ飛ぶ

★★★★★ ★★★★★ ★★★★★

2.APIリファレンス

Microbit モジュール加速度センサーオーディオBluetooth
ボタンコンパスディスプレイローカル永続ファイルシステム
I2CイメージミュージックNeoPixel
入出力端子無線通信乱数生成音声
SPIUARTutime

APIリファレンスのミュージックページ以降へ飛ぶ

★★★★★ ★★★★★ ★★★★★

2.micro:bit Micropython API(APIリファレンス)

■microbit モジュール

microbit モジュールは、ボードに組み込まれているハードウェアすべてにアクセスするためのものです。

いくつかの関数が直接利用できます。

# 指定したミリ秒数だけ休止します。
sleep(ms)
# micro:bit の電源が入ってから経過したミリ秒数を返します。
running_time()
# micro:bit をパニックモードにします(これは通常、デバイス抽象レイヤーがメモリ不足になったときに
# 起き、ディスプレイに悲しい顔が出ます)。エラーコードには任意の整数値を指定できます。
panic(error_code)
# micro:bit をリセットします。
reset()

残りの機能は、後述するように microbit モジュール内のオブジェクトおよびクラスによって提供されます。

—————————————————————————————————-

関数

 microbit.panic(n) 

パニックモードに入ります。再起動が必要となります。引数 n にはステータスを示す 255 以下の整数を渡します。

microbit.panic(255)

—————————————————————————————————-

 microbit.reset() 

ボードを再起動します。

microbit.reset()

—————————————————————————————————-

 microbit.sleep(n) 

ミリ秒だけ待機します。1 秒は 1000 ミリ秒なので、以下は 1 秒間実行を一時停止します。

microbit.sleep(1000)

—————————————————————————————————-

 microbit.running_time() 

ボードの電源が入ったか再起動してからの経過時間をミリ秒単位で返します。

microbit.running_time()

—————————————————————————————————-

 microbit.temperature() 

micro:bit の温度を摂氏で返します。

microbit.temperature()

★★★★★ ★★★★★ ★★★★★

■加速度センサー

加速度センサーは accelerometer オブジェクトを介して利用します。

# デバイスの X 軸を読みます。ミリg単位で計測します。
accelerometer.get_x()
# デバイスの Y 軸を読みます。ミリg単位で計測します。
accelerometer.get_y()
# デバイスの Z 軸を読みます。ミリg単位で計測します。
accelerometer.get_z()
# X, Y, Z の3軸すべてを(この順番の並びで)得ます。
accelerometer.get_values()
# 現在のジェスチャの名前を返します。
accelerometer.current_gesture()
# 指定の名前のジェスチャが現在行われているかにより True または False を返します。
accelerometer.is_gesture(name)
# 最後に呼び出されてから、指定の名前のジェスチャが行われたかにより True または False を
# 返します。
accelerometer.was_gesture(name)
# ジェスチャの履歴のタプルを返します。直近のものが最後に並びます。
accelerometer.get_gestures()

認識ジェスチャーは以下のとおりです up , down , left , right , face up , face down , freefall , 3g , 6g , 8g , shake

—————————————————————————————————-

モジュール

このオブジェクトでボード上の加速度センサーにアクセスできます。加速度センサーはジェスチャーを検出するのにも使えます。認識できるジェスチャーとしては up , down , left , right ,face up , face down , freefall , 3g , 6g , 8g , shake があります。

デフォルトで MicroPython は加速度センサーの測定範囲を +/- 2g に設定しますが、現在 MicroPython で加速度センサーの測定範囲は変更できません。加速度センサーは、各軸について加速度に応じてスケーリングされた 0..1024 の範囲の値を返しします。

—————————————————————————————————-

関数

 microbit.accelerometer.get_x() 
 microbit.accelerometer.get_y() 
 microbit.accelerometer.get_z() 

x 軸( y 軸, z 軸)の加速度を得ます。方向に応じて正または負の整数値になります。測定はミリg単位で行われます。”デフォルトで加速度センサーの測定範囲は +/- 2g に設定されているため、このメソッドは +/- 2000mg の範囲内で返します。

—————————————————————————————————-

 microbit.accelerometer.get_values() 

すべての軸の加速度を得ます。X, Y, Z の順番の3要素の整数値のタプルが返ります。測定はミリg単位で行われます。”デフォルトで加速度センサーの測定範囲は +/- 2g に設定されているため、X, Y, Z は +/- 2000mg の範囲内になります。

—————————————————————————————————-

 microbit.accelerometer.current_gesture()  

現在のジェスチャーの名前を返します。

【注釈】

MicroPython は次の名前のジェスチャーを認識します "up" , "down" , "left" , "right" , "face up" , "face down" ,"freefall" , "3g" , "6g" , "8g" , "shake" 。ジェスチャーは常に文字列で表されます。

—————————————————————————————————-

 microbit.accelerometer.is_gesture(name)  

指定した名前のジェスチャーが認識されているかにより True または False を返します。

—————————————————————————————————-

 microbit.accelerometer.was_gesture(name)  

前回の呼出し以降に指定した名前のジェスチャーが認識されたかにより True または False を返します。

—————————————————————————————————-

 microbit.accelerometer.get_gestures()  

ジェスチャーの履歴をタプルで返します。タプルは古い順に並び、最新のものが最後の要素になります。この呼出しを行うとジェスチャーの履歴はクリアされます。

【注釈】

ジェスチャーはバックグラウンドでは更新されないため、ジェスチャー検出を行うには、何らかの加速度センサーのメソッドを常に呼び出す必要があります。通常、ジェスチャーは microbit.sleep() による小さな遅延のあるループを使って検出できます。

—————————————————————————————————-

サンプルコード

マジック8ボール占いです。質問の後にデバイスを振ってください。

# マジック8ボール占い 作成者:Nicholas Tollervey 2016年2月。
#
# 質問の後にデバイスを振ってください。
#
# このプログラムはパブリックドメインで公開します。
from microbit import *
import random

answers = [
    "It is certain",
    "It is decidedly so",
    "Without a doubt",
    "Yes, definitely",
    "You may rely on it",
    "As I see it, yes",
    "Most likely",
    "Outlook good",
    "Yes",
    "Signs point to yes",
    "Reply hazy try again",
    "Ask again later",
    "Better not tell you now",
    "Cannot predict now",
    "Concentrate and ask again",
    "Don't count on it",
    "My reply is no",
    "My sources say no",
    "Outlook not so good",
    "Very doubtful",
]

while True:
    display.show('8')
    if accelerometer.was_gesture('shake'):
        display.clear()
        sleep(1000)
        display.scroll(random.choice(answers))
    sleep(10)

★★★★★ ★★★★★ ★★★★★

■ボタン

ボードには2つのボタンがあります。button_a button_b です。

これらはどちらもオブジェクトであり、次のメソッドがあります。

# メソッドを呼んだときにボタンが押されているかにより True または False
# を返します。
button.is_pressed()
# デバイスが始動まやは前回にこのメソッドが呼び出されてからボタンが
# 押されたかにより True または False を返します。
button.was_pressed()
# ボタン押下の回数を返し、このカウンタをゼロにリセットします。
button.get_presses()

—————————————————————————————————-

属性

 button_a 

左の A ボタンを表す Button インスタンスです。

—————————————————————————————————-

 button_b 

右の B ボタンを表す Button インスタンスです。

—————————————————————————————————-

クラス

ボタンを表します。

 class button 
 is_pressed() 
 指定のボタンが押されていれば True を返し、押されていなければ False を返します。

—————————————————————————————————-

 was_pressed() 
 デバイスが起動されてから、もしくは前回このメソッドが呼ばれてからボタンが(上から下へ)押されたかによって True または False を返します。このメソットを呼び出すとボタンが押されたかの状態がクリアされるので、再度このメソッドが True を返すようにするには、このメソッドを呼び出す前にボタンが押されなければなりません。

—————————————————————————————————-

 get_presses() 
 ボタンを押した回数の合計を返し、返す前に回数をゼロにリセットします。

—————————————————————————————————-

サンプルコード

import microbit

while True:
    if microbit.button_a.is_pressed() and microbit.button_b.is_pressed():
        microbit.display.scroll("AB")
        break
    elif microbit.button_a.is_pressed():
        microbit.display.scroll("A")
    elif microbit.button_b.is_pressed():
        microbit.display.scroll("B")
    microbit.sleep(100)

★★★★★ ★★★★★ ★★★★★

■コンパス

コンパスは compass コンパスオブジェクトを介して利用します。

# コンパスを調整します(これは正確な計測のために必要です)。
compass.calibrate()
# "北" からの相対角度を示す数値を返します。
compass.heading()
# micro:bit の周りの磁場の強度を示す数値を返します。
compass.get_field_strength()
# コンパスが調整されているかにより True または False を返します。
compass.is_calibrated()
# コンパスの調整されていた状態をリセットします。
compass.clear_calibration()

—————————————————————————————————-

モジュール

このモジュールを使うと内蔵の電子コンパスにアクセスできます。使用する前にコンパスを調整する必要があります。調整しておかないと検知を誤る可能性があります。

関数

 microbit.compass.calibrate() 

調整処理を開始します。指示メッセージがユーザにスクロールで示された後、LEDディスプレイ上に円を描くようデバイスを回転させます。

—————————————————————————————————-

 microbit.compass.is_calibrated() 

調整が成功したかどうかにより True または False を返します。

—————————————————————————————————-

 microbit.compass.clear_calibration() 

調整を取り消し、コンパスを調整されていない状態にします。

—————————————————————————————————-

 microbit.compass.get_x() 
 microbit.compass.get_y() 
 microbit.compass.get_z() 

x 軸( y 軸, z 軸)の磁場強度をナノテスラで得ます。磁場の方向に応じて正または負の整数値になります。

—————————————————————————————————-

 microbit.compass.heading() 

3軸の磁力から計算された方位を返します。値は時計回りの角度を示す 0 から 360 までの整数で、0 は北となります。

—————————————————————————————————-

 microbit.compass.get_field_strength() 

デバイスのまわりの磁場の強さを示す整数値をナノテスラで返します。

—————————————————————————————————-

サンプルコード

"""
    compass.py
    ~~~~~~~~~~

    方位磁石の作成。

    まず最初にコンパスを調整する必要があります。
    コンパスは内蔵の時計イメージを使って針の位置を表示します。

"""
from microbit import *


# 調整の開始
compass.calibrate()

# 針が(大まかに)正しい方向を向くようにします
while True:
    sleep(100)
    needle = ((15 - compass.heading()) // 30) % 12
    display.show(Image.ALL_CLOCKS[needle])

★★★★★ ★★★★★ ★★★★★

■ディスプレイ

LED ディスプレイは display オブジェクトを介して利用します。

# ピクセル (x, y)の照度を得ます。照度は 0 (ピクセルがオフ)から 9 (ピクセルが最大照度)
# までの値をとります。
display.get_pixel(x, y)
# ピクセル (x, y)の照度に val (0 [オフ] から 9 [最大照度] の範囲)
# を設定します。
display.set_pixel(x, y, val)
# ディスプレィをクリアします。
display.clear()
# イメージを表示します。
display.show(image, delay=0, wait=True, loop=False, clear=False)
# iterable のイメージまたは文字のそれぞれを delay ミリ秒間隔で表示する。
display.show(iterable, delay=400, wait=True, loop=False, clear=False)
# 文字列 string をディスプレイでスクロールします(メッセージを表示するなら display.show
# よりも効果的)。
display.scroll(string, delay=400)

—————————————————————————————————-

モジュール

このモジュールは、ボードの前面にある 5×5 LED ディスプレイを制御します。イメージ、アニメーション、テキストの表示に利用できます。

関数

 microbit.display.get_pixel(x, y) 

x y 行の LED の明るさを返します。返り値は 0 (オフ)から 9 (明るい)までの整数値です。

—————————————————————————————————-

 microbit.display.set_pixel(x, y, value) 

x y 行の LED の明るさを設定します。value には 0 (オフ)から 9 (明るい)までの整数値を指定します。

—————————————————————————————————-

 microbit.display.clear() 

すべての LED の明るさを 0 (オフ)に設定します。

—————————————————————————————————-

 microbit.display.show(image) 

イメージ image を表示します。

—————————————————————————————————-

 microbit.display.show(value, delay=400, *, wait=True, loop=False, clear=False) 

value が文字列、浮動小数点数、整数であれば、文字/数字を順番に表示します。value がイメージの並びであれば、そのイメージの並びを順番に表示します。それぞれの文字、数字、イメージは delay ミリ秒間隔で表示されます。

wait True である場合、アニメーションが終了するまで関数がブロックし、 False の場合にはバックグラウンドで実行されます。

loop True である場合、アニメーションが永遠に繰り返します。

clear True である場合、表示が終了後にディスプレイをクリアします。

wait , loop , clear 引数は、キーワードを用いて指定する必要があることに注意してください。

【注釈】

iterable でジェネレータを使う場合、ジェネレータでメモリをアロケートしないよう注意してください。割り込みでメモリをアロケートすると MemoryError が起きます。

—————————————————————————————————-

 microbit.display.scroll(value, delay=150, *, wait=True, loop=False, monospace=False) 

ディスプレィ上に value を水平方向にスクロールさせます。value が整数か浮動小数点数であれば、表示の前に str() を使って文字列に変換します。delay パラメータはテキストのスクロール速度を制御します。

wait True である場合、アニメーションが終了するまで関数がブロックし、False の場合にはバックグラウンドで実行されます。

loop True である場合、アニメーションが永遠に繰り返します。

monospace True である場合、文字は 5 ピクセル幅になります。False の場合はスクロールでの文字間が 1 ピクセルのブランクになります。

wait , loop , monospace 引数は、キーワードを用いて指定する必要があることに注意してください。

—————————————————————————————————-

 microbit.display.on() 

ディスプレイを有効にします。

—————————————————————————————————-

 microbit.display.off() 

ディスプレイを無効にするのは off() を使います(ディスプレイに関連づけられた GPIO 端子を他の目的に再利用できるようにします。

—————————————————————————————————-

 microbit.display.is_on() 

ディスプレイが有効であれば True 、無効であれば False を返します。

—————————————————————————————————-

 microbit.display.read_light_level() 

ディスプレイの LED を逆バイアスモードで利用して、ディスプレイのまわりの光量を検出します。戻り値は明度を表す 0 から 255 までの整数値で、値が大きいほど強い明度を意味します。

—————————————————————————————————-

サンプルコード

import microbit

microbit.display.scroll('Hello!', wait=False, loop=True)

★★★★★ ★★★★★ ★★★★★

■ローカル永続ファイルシステム

データの永続的な保存は、デバイスの再起動の間に変更されないようにしておくと便利です。従来のコンピュータでは、生データを保持する名前付きファイルとファイルを含む名前付きディレクトリで構成されるファイルシステムによって実現されているものが多いです。Python は、そのようなファイルシステムで作業するために必要なさまざまな操作をサポートしています。

ただし、micro:bit はハードウェアとストレージの両方の容量で制限されたデバイスなので、MicroPython はデバイス上のデータを保持するために必要な機能の小さなサブセットを提供します。メモリの制約のため、ファイルシステムの 記憶域は約 30 KB となっています。

★★★★★ ★★★★★ ★★★★★

■I2C

micro:bit には I2C バスがあり、i2c オブジェクトを介して利用します。このオブジェクトには以下のメソッドがあります。

# アドレス addr のデバイスから n バイト読み込みます。repeat=True はストップビットが
# 送信されないことを意味します。
i2c.read(addr, n, repeat=False)
# アドレス addr のデバイスに buf を書き出します。repeat=True はストップビットが
# 送信されないことを意味します。
i2c.write(addr, buf, repeat=False)

モジュール

i2c モジュールを使えば BBC micro:bit に接続したデバイスと I²C バスプロトコルで通信できます。同時に複数のスレーブデバイスと通信つることができ、それぞれのデバイスには一意のアドレスがあります。このアドレスはデバイスに固定されているか、設定されています。BBC micro:bit は I2C マスタとして動作します。

ここに書かれている理由により、デバイスには 7 ビットアドレッシングを使います。

7ビットアドレッシング

7ビットアドレス指定手順では、スレーブアドレスは、スタート条件の後の最初のバイトで転送されます。バイトの最初の7ビットはスレーブアドレスを構成します。8番目のビットは読み取り/書き込みフラグで、0は書き込みを示し、1は読み取りを示します。

図. 7ビットアドレス指定。I2Cバスの仕様では、標準モードのI2Cでは、スレーブアドレスは7ビット長で、その後に読み取り/書き込みビットが続くことが規定されています

関数

 microbit.i2c.init(freq=100000, sda=pin20, scl=pin19) 

指定の端子 sda scl と指定のクロック周波数 freq でデバイスを再初期化します。

警告

I2C端子をデフォルトから変更すると、加速度センサーやコンパスの動作が停止します。これらセンサーが内部でデフォルト以外の端子に結線されているからです。

—————————————————————————————————-

 microbit.i2c.scan() 

デバイスのバスをスキャンします。スキャンに応答したデバイスに該当する7ビットアドレスのリストを返します。

—————————————————————————————————-

 microbit.i2c.read(addr, n, repeat=False) 

7 ビットアドレス addr のデバイスから n バイトを読み込みます。repeat True にすると、ストップビットが送られません。

—————————————————————————————————-

 microbit.i2c.write(addr, buf, repeat=False) 

7 ビットアドレス addr のデバイスに buf のバイト列を書き込みます。repeat True にすると、ストップビットが送られません。

★★★★★ ★★★★★ ★★★★★

■イメージ

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

display.show(Image.HAPPY)

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

①.Image() – 空の 5×5 イメージを作成

②.Image(string) – 1文字がそのグリフを表す文字列を解析してイメージを作成

③.Image(width, height) – 与えたサイズの空のイメージを作成

④.Image(width, height, buffer) – 与えたバッファからイメージを作成

—————————————————————————————————-

【注釈】

いつも自分でイメージを作成する必要はありません。display.image を使用してディスプレイに表示されるイメージに直接アクセスできます。display.image は Image の単なるインスタンスなので、同じメソッドをすべて使用できます。

イメージ API

# 空の 5x5 イメージを作成。
image = Image()
# 文字列からイメージを作成 - 文字列中の各文字は LED を表す - 0 (またはスペース)はオフ、
# "9 は最大照度。コロン ":" は行の終端を示します。
image = Image('90009:09090:00900:09090:90009:')
# 与えたサイズの空のイメージを作成します。
image = Image(width, height)
# 指定の width と height でイメージを初期化します。buffer は長さが
# width * height の配列です。
image = Image(width, height, buffer)

# メソッド
# イメージの width (最大 5)を返します。
image.width()
# イメージの height (最大 5)を返します。
image.height()
# 指定の位置のピクセルを設定します(0 から 9 の範囲)。組込みのイメージでは
# 失敗します。
image.set_pixel(x, y, value)
# 指定の位置のピクセルを得ます(0 から 9 の範囲)。
image.get_pixel(x, y)
# イメージを左に 'n' 回シフトした新しいイメージを返します。
image.shift_left(n)
# イメージを右に 'n' 回シフトした新しいイメージを返します。
image.shift_right(n)
# イメージを上に 'n' 回シフトした新しいイメージを返します。
image.shift_up(n)
# イメージを下に 'n' 回シフトした新しいイメージを返します。
image.shift_down(n)
# イメージのコンパクトな文字列表現を得ます。
repr(image)
# イメージのより可読性のある文字列表現を得ます。
str(image)

#演算子
# 2つのイメージを重ね合わせた新しいイメージを返します。
image + image
# 各ピクセルの照度に n を掛けた新しいイメージを返します。
image * n

# 組込みのイメージ。
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 # 12 時を示す時計
Image.CLOCK11
... # 多くの時計イメージ (Image.CLOCKn)
Image.CLOCK1 # clock at 1 o'clock
Image.ARROW_N
... # 方角を示す矢印 N, NE, E, SE, S, SW, W, NW (microbit.Image.ARROW_direction)
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
# 組込みのリスト - アニメーションに便利。例: display.show(Image.ALL_CLOCKS)
Image.ALL_CLOCKS
Image.ALL_ARROWS

—————————————————————————————————-

クラス

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

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

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 のピクセルイメージを最大輝度で作成します。

—————————————————————————————————-

 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

—————————————————————————————————-

演算子

repr(image)

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

str(image)

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

image1 + image2

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

image * n

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

★★★★★ ★★★★★ ★★★★★

チュートリアルのページへ飛ぶ

APIリファレンスのミュージックページ以降へ飛ぶ

★★★★★ ★★★★★ ★★★★★