tande lab.

[Processing] 1フレームごとに画像キャプチャ

アニメーションを1フレームずつpngで吐き出すことができます。
こういう外部に吐き出す処理とかはFlashよりProcessingが便利。

拡張子をjpgにするとjpgでもいけるみたい。
他の拡張子では試してませんがpngで十分かと思います。

CaptureToPNG 関数

1フレームごとに画像キャプチャする関数です。
こいつをsetup関数とdraw関数以外のどこでもいいので記述します。

//CaptureToPNG(ファイル, ファイル名に付与する数字, 数字桁数 ,ドットを含む拡張子);
void CaptureToPNG(String fileURL, int num, int digits ,String fileType){  
  
  //指定した桁数に満たない数字の右側に0を追加
  String numString = nf(num, digits); 

  // フレーム枚にpngへキャプチャ
  String pngName = fileURL + numString + fileType; 
  save(pngName);  
  
}

nf(); を使って吐出すファイルの数字桁数を揃えておくと、その後色々と使いやすいです。
nfコマンドは↓を参照。
http://processing.org/reference/nf_.html

使い方

draw関数の中の一番最後に↓を記述します。

//1フレームごとにpngでキャプチャ
CaptureToPNG("./capture/frame_", i, 3, ".png"); 
i++;

iはカウンタ変数として関数外で初期化しておく必要があります。

int i = 0;

drawを実行するたびに

frame_001.png
frame_002.png

といったように増えていきます。

実行すると、captureというフォルダの直下にキャプチャされたpng画像が入っているはずです。




0 comments
Submit comment