I'm looking for the fastest way to write pixels on javafx.scene.image.Image
. Writing to BufferedImage
's backing array is much faster. At least on the test image I made it took only ~20ms for BufferedImage
, WritableImage
on the other hand took ~100ms. I already tried SwingFXUtils
but no luck.
Code for BufferedImage
(faster):
BufferedImage bi = createCompatibleImage( width, height );
WritableRaster raster = bi.getRaster();
DataBufferInt dataBuffer = (DataBufferInt) raster.getDataBuffer();
System.arraycopy( pixels, 0, dataBuffer.getData(), 0, pixels.length );
Code for WritableImage
(slower):
WritableImage wi = new WritableImage( width, height );
PixelWriter pw = wi.getPixelWriter();
WritablePixelFormat<IntBuffer> pf = WritablePixelFormat.getIntArgbInstance();
pw.setPixels( 0, 0, width, height, pf, pixels, 0, width );
Maybe there's a way to write to WritableImage
's backing array too?