Создание изображения Javafx из массива int

Я отчаянно пытаюсь создать изображение из массива пикселей с целочисленными значениями. Независимо от использования WritableImage или Canvas, всегда говорят, что PixelFormat — это BYTE_RGB или BYTE_BGRA_PRE, так что я вынужден использовать массив байтов.

Есть ли способ изменить PixelFormat на <IntBuffer> или я пропустил другой компонент, который может иметь PixelFormat<IntBuffer>?


person Adam    schedule 26.01.2016    source источник


Ответы (1)


Вы не описали структуру данных пикселей в своем int[], но вы можете сделать что-то вроде

int[] pixels = ... ;
WritableImage img = new WritableImage(width, height);
PixelWriter pw = img.getPixelWriter();
pw.setPixels(0, 0, width, height, PixelFormat.getIntArgbInstance(), pixels, 0, width);
person James_D    schedule 26.01.2016
comment
Большое спасибо четыре ответа! Использование метода PixelWriters setPixels() у меня не работает должным образом. Изображение не появляется! Мой ImageView загружает его только при переходе на byte[] pixelarray и byte-PixelFormat, который он показывает. Также System.out.println(img.getPixelWriter().getPixelFormat().getType()); выдает «BYTE_BGRA_PRE» - person Adam; 26.01.2016
comment
Что на самом деле находится в вашем массиве целых чисел? - person James_D; 26.01.2016
comment
Ну... что вы на самом деле ожидаете увидеть тогда? Если все пиксели имеют нулевую альфу, они все прозрачны. - person James_D; 26.01.2016