2015-12-21 4 views
0

Мне нужен быстрый способ преобразования изображения JavaFX в массив байтов.JavaFx Image to byte [] array (Закрыто)

Путь с "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

Думаю, я сейчас, где моя проблема. Я пытаюсь отобразить изображение на веб-странице. Но я делаю что-то неправильно с чтением блоба. Код, который я разместил, правильно? – Marcel

+0

Мое решение также вызывает OutOfMemory после некоторых вызовов. – Marcel

ответ

-3

вы можете использовать toByteArray() метод IOUtils класса из org.apache.commons пакета. see here

+0

Нет, я не могу. Потому что у меня нет потока или что-то, что я могу использовать для этого. Если я конвертирую в Fx-Image в AWT-изображение, я могу использовать OutputStreams для этого. Но это должно замедляться. – Marcel