2015-12-21 38 views
0

我需要一種快速方法將JavaFX圖像轉換爲字節數組。JavaFx圖像到字節[]數組(閉合)

「BufferedImage bImage = SwingFXUtils.fromFXImage(i,null);」是慢下來的。

我認爲最好不要將圖像先轉換爲awt.BufferedImage。

所以我至今是:

PixelReader pr = img.getPixelReader(); 

    WritablePixelFormat<ByteBuffer> pixelformat = WritablePixelFormat.getByteBgraInstance(); 

    int w = (int) img.getWidth(); 
    int h = (int) img.getHeight(); 
    int offset = 0; 
    int scanlineStride = w * 4; 

    byte[] buffer = new byte[w * h * 4]; 

    pr.getPixels(0, 0, w, h, pixelformat, buffer, offset, scanlineStride); 

但作爲例外,這是行不通的。

似乎像字節[]是空的呢?

enter image description here

+0

您能否解釋行爲與您的期望有何不同? –

+0

我想現在我的問題在哪裏。我試圖在網頁上顯示圖像。但即時通訊讀取blob做錯了。我發佈的代碼,是嗎? – Marcel

+0

我的解決方案在一些調用後也會導致OutOfMemory。 – Marcel

回答

-3

你可以使用IOUtils類的toByteArray()方法從org.apache.commons包。 see here

+0

不,我不能。因爲我沒有任何流或我可以使用的東西。如果我將Fx-Image轉換爲AWT-Image,我可以使用OutputStreams來完成它。但這是緩慢的。 – Marcel