写真などの画像があるものとする。ファイルのパス z:/Pictures/sakura.jpg は適宜書き換えること。なお、スケッチを保存してできるフォルダの中にdataという名前のフォルダを作成し、そこに置いたファイルであれば、ファイル名だけでよい。
適当な画像がなければ、 https://teams.microsoft.com/_#/files/%E4%B8%80%E8%88%AC?threadId=19%3Aafb14e0e480b4ebba64329b5ce1ac176%40thread.skype&ctx=channel&context=image に用意した。
【プログラムA】 PImage gazou; size(640,480); gazou = loadImage("z:/Pictures/sakura.jpg"); image(gazou,0,0,width,height);
画像が表示されるはず。loadImageで画像を読み込み、変数gazouその情報を入れる。 image()で画像を指定された場所(この例では左上隅)と大きさ(この例ではウィンドウの大きさいっぱい)で表示する。width, heightは省略できて、その場合には、画像は元の大きさで表示される。ただし、表示できない部分は切り取られる。
画像の色を変えてみよう。 Image()の前に次の行を加えてみる。
tint(200,150,80);
画像が茶色になるだろう。もともとの画像ではRGBそれぞれ0~255の256段階であるものを指定された値までの段階に圧縮する。上の例では、Rは200まで、Gは150まで、Bは80までなので、緑Gや青Bの明るさが小さくなり、結果として茶色に近い色合いになる。 tintには透明度も指定できる。例えば
tint(255,160);
を指定すると、画像の色は変わらず、少し透明になる。
PImage img; size(400,400); strokeWeight(8); line(0,400,400,0); line(0,0,400,400);
img = loadImage("z:/Pictures/sakura.jpg"); tint(255,160); image(img,0,0);
O sketch_190S07d
【課題】 2つの画像A, Bを重ねて表示してみよう。 画像Aは点(0,0)、画像Bは点(width/2, height/2)が左上隅になるように表示させよ。 画像Bを少し透明にして上から重ねてみること。
上の課題はスタティックなスケッチで実現できる。アクティブな(setupとdrawのある)スケッチを用いて、1つの画像の上にもう一つの画像がフェードインして重なるようにしてみよ。
PImage gazou1, gazou2; float alpha = 0;
void setup(){
size(640,480); gazou1 = loadImage("z:/Pictures/gazoua.jpg"); gazou2 = loadImage("z:/Pictures/gazoub.jpg");
}
void draw(){
... tint(255,alpha); ...
}