processing でpng 画像を保存する方法

目的

processingで今映っている画像を任意のキーボードを打つことによってpngで保存する。

重要な関数

keyPressed();

www.musashinodenpa.com

saveFrame("something.png");

www.musashinodenpa.com

の二つ。

使用例

/*
* press 's'or'S'  :  save png
*/

void setup(){
  size(800,600);
  background(0);  
}

void draw(){
  draw_ellipse();
}


void keyPressed(){
  if(key=='s'||key=='S')saveFrame("PNG"+"####"+".png");//  Also,  "PNG####.png" is OK.
}



void draw_ellipse(){
  for(int i=0;i<5;i++){
    float x,y;
    x=random(0,width);
    y=random(0,height);
    if(abs(x-(float)width/2)+abs(y-(float)height/2)>=height/2){
      noStroke();
      fill(255);
      ellipse(x,y,5,5);
      }
  }

}

解説

void keyPressed(){
  if(key=='s'||key=='S')saveFrame("PNG"+"####"+".png");//  Also,  "PNG####.png" is OK.
}

ここがこのページの目的の部分である。

 keyPressed(){}の関数はキーボード入力がされた時に実行される。

 keyはキーボード入力が入る変数で、文字列であらわされる。

 ####はフレーム数が入る部分であり、デフォルトでは60fpsであるので、一秒で60増える。

 余談だが、#の数を$n$とすると、累積フレーム数$f$が$f<n$の時、余った桁の#の部分に0が追加される。

 そして、#の桁数以上のフレーム数になっても保存されるので大丈夫。