質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

3752閲覧

Processingでsaveを使っての画像出力について…

luma

総合スコア183

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2015/12/06 13:50

Processing3のPAppletのコアをEclipseに移してJava8で開発しています。

PAppletsave(ファイルパス)を使って画面を保存しようとしているのですが、

getSurface().setSize(IWidth, IHeight);

といった具合で、intのIWidthIHeightを縦横の大きさとして、

任意の大きさの画像を出力したいのですが…

settings()で設定したサイズより大きい(高さもしくは幅どちらかが大きい)状態で出力すると

java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
と例外を吐かれます…

小さければ問題なく、指定したサイズに出力されます。

対策として、
0. settings()で大きめにサイズ指定→draw()で常時使われてる大きさが使われる(?)ようです
0. getGraphics().setSize(IWidth, IHeight)してみる→意味なし
0. 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

PGraphics

載せといてあれなんですが、
processing3より前と後で、少々メソッドが異なったりしているようです…

公式のEclipseにprocessingを導入する方法

目的は
settings()で設定したサイズより大きい(高さもしくは幅どちらかが大きい)状態で問題なく出力すること

解決に有効な手段としては、

  • PAppletPGraphicsGraphics等に変換して、java標準のものにして出力
  • new PGraphics()での例外とエラーを解決する

などを考えてみましたが、どうにも難しいです…

一応この質問はスタックオーバーフローにも投げかけてみてはいます…

ちょっとかなり(?)マニアックなことやってて回答どころか理解されるか不安ですが、

ご助力願います!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

公式のcreateGraphicsの説明に、

java

1 2PGraphics pg; 3 4void setup() { 5 size(200, 200); 6 pg = createGraphics(100, 100); 7} 8 9void draw() { 10 pg.beginDraw(); 11 pg.background(102); 12 pg.stroke(255); 13 pg.line(pg.width*0.5, pg.height*0.5, mouseX, mouseY); 14 pg.endDraw(); 15 image(pg, 50, 50); 16}

といった具合に、pg.beginDraw();で描画を初めて、pg.endDraw();で描画完了の様です…
無事動きました。

投稿2015/12/09 08:52

luma

総合スコア183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問