オリジナル画像フィルター
PImage imgPic; //写真データを記憶する PImage imgFilter; //フィルター用のイラスト画像を記憶する void setup() { size(800, 600); noStroke(); imgPic = loadImage("image.jpg"); //写真 imgPic.resize(800, 600); imgFilter = loadImage("filterImage.bmp"); //フィルター画像 imgFilter.resize(800, 600); for (int y = 0; y < imgPic.height; y+=1) { for (int x = 0; x < imgPic.width; x+=1) { color cp = imgPic.get(x, y); //写真の色を取得 color cf = imgFilter.get(x, y); //フィルターの色を取得 if ( red(cf) == 0 && green(cf) == 0 && blue(cf) == 0) { //黒(0,0,0)なら //写真の各色を平均にしてグレースケールにしてみる int gray = (int)((red(cp) + green(cp) + blue(cp)) / 3); cp = color(gray, gray, gray); //変更した色を代入 } if ( red(cf) == 255 && green(cf) == 0 && blue(cf) == 0) { //赤(255,0,0)なら //赤色成分だけ2倍にしてみる cp = color(red(cp)*2, green(cp), blue(cp)); //変更した色を代入 } if ( red(cf) == 0 && green(cf) == 0 && blue(cf) == 255) { //青(0,0,255)なら //セピア調にしてみる float rs = red(cp) * 0.393 + green(cp) * 0.769 + blue(cp) * 0.189; float rg = red(cp) * 0.349 + green(cp) * 0.686 + blue(cp) * 0.168; float rb = red(cp) * 0.272 + green(cp) * 0.534 + blue(cp) * 0.131; cp = color(rs, rg, rb); //変更した色を代入 } stroke(cp); //線の色を変更 point(x, y); } } }
Copy