差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| openframeworks:fbo_frame_of_buffer [2019/06/26 19:36] – [描画している任意の部分を画像に保存したい] baba | openframeworks:fbo_frame_of_buffer [2019/06/26 19:42] (現在) – baba | ||
|---|---|---|---|
| 行 9: | 行 9: | ||
| ===== 描画している任意の部分を画像に保存したい ===== | ===== 描画している任意の部分を画像に保存したい ===== | ||
| 例えば画面上にある画像を表示し、その上に任意の文字列を表示したサンプルがあるとします。画像自体はofImageで読み込みしているので、保存することは簡単にできますが、その上に描画されている任意テキストも一緒に、となるとちょっと難しくなります。例えばofに ofSaveScreen()なる関数が用意されているので、これを使えば画面にスクリーンショットを保存できますし、mac標準のスクリーンショット機能を使えば同様のことは可能です。一方で任意の場所に関して保存したい場合はfboが役に立ちます。以下のサンプルは画面上に sample.jpg を表示し、その上に "Hello ofFbo" | 例えば画面上にある画像を表示し、その上に任意の文字列を表示したサンプルがあるとします。画像自体はofImageで読み込みしているので、保存することは簡単にできますが、その上に描画されている任意テキストも一緒に、となるとちょっと難しくなります。例えばofに ofSaveScreen()なる関数が用意されているので、これを使えば画面にスクリーンショットを保存できますし、mac標準のスクリーンショット機能を使えば同様のことは可能です。一方で任意の場所に関して保存したい場合はfboが役に立ちます。以下のサンプルは画面上に sample.jpg を表示し、その上に "Hello ofFbo" | ||
| - | * sample.jpg: | + | * {{ : |
| + | 適当なプロジェクトを作成して、下記のofApp.h, | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP half column> | <WRAP half column> | ||
| 行 34: | 行 35: | ||
| #include " | #include " | ||
| - | // | ||
| void ofApp:: | void ofApp:: | ||
| + | // sample.jpg を読み込む dataフォルダにおいておくことを忘れずに | ||
| img.load(ofToDataPath(" | img.load(ofToDataPath(" | ||
| + | | ||
| + | // 読み込んだ画像サイズ分のfboサイズをメモリ確保する | ||
| fbo.allocate(img.getWidth(), | fbo.allocate(img.getWidth(), | ||
| } | } | ||
| - | // | ||
| void ofApp:: | void ofApp:: | ||
| + | // fbo.begin()からfbo.end()の間に記述された描画内容がfboに保存される | ||
| fbo.begin(); | fbo.begin(); | ||
| ofClear(0); | ofClear(0); | ||
| 行 48: | 行 51: | ||
| fbo.end(); | fbo.end(); | ||
| } | } | ||
| - | |||
| - | // | ||
| void ofApp:: | void ofApp:: | ||
| ofBackground(0); | ofBackground(0); | ||
| + | |||
| + | // 0, | ||
| + | // update()内で描画した内容が表示される。 | ||
| fbo.draw(0, | fbo.draw(0, | ||
| } | } | ||
| - | |||
| - | // | ||
| void ofApp:: | void ofApp:: | ||
| if( key == ' | if( key == ' | ||
| ofPixels p; | ofPixels p; | ||
| fbo.readToPixels(p); | fbo.readToPixels(p); | ||
| + | | ||
| + | // saved_image.jpgというjpgファイルを最高品質で補zんする | ||
| ofSaveImage(p, | ofSaveImage(p, | ||
| + | | ||
| + | // データフォルダをfinderで開く(terminalで open ./data を実行している) | ||
| ofSystem(" | ofSystem(" | ||
| } | } | ||
| 行 68: | 行 74: | ||
| </ | </ | ||
| + | |||
| + | 以上を実行し、キーボードの ' | ||