PImage型の変数を宣言(imgは合わせる画像、capはノイズをキャプチャした画像のために使う)
PImage img, cap;
して、setup()の中で画像を読み込む。background()にPImageのインスタンスを入れる場合は画像とウィンドウのサイズを合わせなければならないことに注意。
void setup() {
size(200, 200);
img = loadImage("mkk.jpg");
noiser = new Noiser(colNumber, rowNumber);
}
draw()はこんな感じ。
void draw() {
noiser.drawNoise();
cap = get();
background(img);
blend(cap, 0, 0, width, height, 0, 0, width, height, ADD);
}
noiser.drawNoise()でノイズを作った後、capに代入。
背景をimgで塗りつぶして、blend()使ってcapと合成。
blend()のシンタックス
blend(srcImg, x, y, width, height, dx, dy, dwidth, dheight, MODE)
x, y, width, heightは読み込む画像のx座標、y座標、幅、高さ
dx, dy, dwidth, dheightは書き出し先のx座標、y座標、幅、高さ
MODEはADDの他にも色々あるけどビットシフトはない。イラストレーターとかフォトショップのエフェクトと同じようなもの。試してみると面白い。
ということで、今後この辺は使いそうな気がする。
勿論pixels使って1ピクセル単位で操作することもできるし、ビットシフトはblend()じゃできないからいずれ使うことになるけど、とりあえず簡単な方法から。