我正在寻找最快的方式来写入像素javafx.scene.image.Image
。写信给BufferedImage
的后备数组要快得多。至少在我制作的测试图像上,只花了大约 20 毫秒BufferedImage
, WritableImage
另一方面花费了~100ms。我已经尝试过了SwingFXUtils
但没有运气。
代码为BufferedImage
(快点):
BufferedImage bi = createCompatibleImage( width, height );
WritableRaster raster = bi.getRaster();
DataBufferInt dataBuffer = (DataBufferInt) raster.getDataBuffer();
System.arraycopy( pixels, 0, dataBuffer.getData(), 0, pixels.length );
代码为WritableImage
(慢点):
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 );
也许有一种方法可以写信给WritableImage
也是支持阵列吗?