oF:save image via fbo
はじめに
oFで画面保存と言えば、
ofSaveScreen("xxx.png");
である。
しかし、ofFbo上にAlpha Blendを有効にして描画を行い、同fboをofDisableAlphaBlending();で画面に描画した場合、最終画面は、Alpha Blendされていないので、これを保存した場合、Alpha効果がない(背景が抜けない、など)と言う問題が生じる。
そこで今回は、fboから直接image saveするための方法を調査した。
How to
openFrameworksにて、Fbo経由でスクリーンショットを保存する方法です。
一旦ofPixelsに変換したのちofImageに渡してから保存します。
void ofApp::keyPressed(int key){
switch(key){
case ' ':
{
ofImage img;
ofPixels pixels;
fbo.readToPixels(pixels);
img.setFromPixels(pixels);
char fileNameStr[BUF_SIZE_S];
string date = ofGetTimestampString();//タイムスタンプをファイル名にする
sprintf(fileNameStr, "%s.png", date.c_str());
img.save(fileNameStr,OF_IMAGE_QUALITY_BEST);
printf("> %s saved\n", fileNameStr);
}
break;
}
}
参考URL
もしよろしければ、サポートをお願いします! 頂いたサポートは、Creatorとしての活動費に充てさせて頂きます。