2017-02-19 55 views
3

我在編程一個圖像處理應用程序,爲gui使用javafx und我想在屏幕上顯示處理後的圖片。我的程序正在將圖像處理爲像double [3] [1080] [1920]這樣的三維雙數組,因此我必須減少圖像的顏色空間並將雙精度轉換爲字節或(如果可能)短褲,因爲ImageView javafx不支持每個RGB組件的浮點值或64位。我發現,Imageview只能從文件或輸入流中加載數據,所以我必須創建一個BufferedImage,用數組中的convertet數據填充它,並將BufferedImage編碼爲JPEG,BMP,PNG或GIF寫入流並使用javafx.scene.image.Image的構造函數讀取此流並將此圖像傳遞給ImageView。將數組轉換爲圖像的一種殘酷的方式,我更想用任何文件格式進行編碼,但是我沒有找到替代方法(除了不使用javafx)。

現在我的第一個問題:
BufferedImage的setRGB方法將所有顏色組件粘在一起作爲int。我怎樣才能以正確的方式來組合它們?
而我的第二個問題:
安迪的方法是爲每個組件保存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

回答