2017-02-19 4 views
3

私はGUI処理にjavafxを使用して画像処理アプリケーションをプログラミングしています。処理された画像を画面に表示したいと思います。私のプログラマーはdouble [3] [1080] [1920]のような3次元の二重配列としてイメージを扱っていますので、イメージの色空間を減らし、倍精度をバイトまたは(可能であれば)shortに変換する必要があります。 javafxは、浮動小数点値またはRGBコンポーネントのそれぞれの64ビットをサポートしていません。 Imageviewはファイルや入力ストリームからのみデータを読み込むことができるので、BufferedImageを作成し、配列からconvertetデータを入力し、BufferedImageエンコーディングをJPEG、BMP、PNGまたはGIFとしてストリームに書き込む必要があることがわかりましたこのストリームをjavafx.scene.image.Imageのコンストラクタで読み込み、このイメージをImageViewに渡します。配列を画像に変換する残酷な方法で、私は新しいファイル形式でエンコードすることを望んでいましたが、これに代わる方法は見つかりませんでした(javafxを使用しない場合を除く)。

私の最初の質問:
BufferedImageのsetRGBメソッドは、すべての色成分をintとしてまとめて取ります。正しい方法でそれらをどのように組み合わせることができますか?
私の2番目の質問:
各コンポーネントの8ビット以上を保存するための方法はありますか?

ありがとうございました!データ配列からjavafxイメージを作成する

+0

ファイル形式を経由する必要はありません。 'ImageView'を作成し、' setImage(...) 'で 'Image'を直接設定することができます。 [WritableImage'](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/WritableImage.html)とその[PixelWriter](http:// docs。 oracle.com/javase/8/javafx/api/javafx/scene/image/PixelWriter.html)を使用して、データをイメージに挿入します。 –

+0

'WritableImage'を使って私は変換を避けるだけでなく、' setPixels'を 'PixelFormat.getByteRgbInstance'と共に使用して、データを' byte'配列として扱うことができます。それはたくさんの助けになりました。ありがとう! – Niclas

答えて

関連する問題