PAppletのsaveでの画像出力について…
Processing3のPApplet
のコアをEclipseに移してJava8で開発しています。
PApplet
のsave(ファイルパス)
を使って画面を保存しようとしているのですが、
getSurface().setSize(IWidth, IHeight);
といった具合で、intのIWidth
とIHeight
を縦横の大きさとして、
任意の大きさの画像を出力したいのですが…
settings()で設定したサイズより大きい(高さもしくは幅どちらかが大きい)状態で出力すると
java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
と例外を吐かれます…
小さければ問題なく、指定したサイズに出力されます。
対策として、
settings()
で大きめにサイズ指定→draw()
で常時使われてる大きさが使われる(?)ようですgetGraphics().setSize(IWidth, IHeight)
してみる→意味なしnew PGraphics()
でPGraphics
を作成して、そこに描画してPGraphics.save(ファイルパス)
を使う→以下のようなエラーを吐いて、java.lang.NullPointerException
を投げる…setMatrix(), or this particular variation of it, is not available with this renderer.
pushMatrix() is not available with this renderer.
resetMatrix() is not available with this renderer.
popMatrix() is not available with this renderer.
blendMode(), or this particular variation of it, is not available with this renderer.
こんな感じです…
情報としては、
setup()
でnoloop()
を使って、別スレッドでredraw()
を呼び出している- 出力サイズが
settings()
で設定したサイズより小さければ問題なく動く - 出力サイズが
settings()
で設定したサイズとアス比が異なっても問題なく動く
ってところです…
参考までに…
PApplet http://processing.googlecode.com/svn/trunk/processing/build/javadoc/core/processing/core/PApplet.html
PGraphics http://processing.googlecode.com/svn/trunk/processing/build/javadoc/core/processing/core/PGraphics.html
載せといてあれなんですが、
processing3より前と後で、少々メソッドが異なったりしているようです…
公式のEclipseにprocessingを導入する方法
ttps://processing.org/tutorials/eclipse/
※信用度の問題でリンクにできませんでした…
目的は
settings()
で設定したサイズより大きい(高さもしくは幅どちらかが大きい)状態で問題なく出力すること
解決に有効な手段としては、
PApplet
かPGraphics
をGraphics
等に変換して、java標準のものにして出力new PGraphics()
での例外とエラーを解決する
などを考えてみましたが、どうにも難しいです…
ちょっとかなり(?)マニアックなことやってて回答どころか理解されるか不安ですが、
ご助力願います!