使用AWT BuffereImage更新JavaFx可写映像的一部分
我正在尝试使用多个较小的分片(作为AWT BuffereImage实例接收)高效地更新大型可写映像 我尝试过的事情:使用AWT BuffereImage更新JavaFx可写映像的一部分,javafx,bufferedimage,Javafx,Bufferedimage,我正在尝试使用多个较小的分片(作为AWT BuffereImage实例接收)高效地更新大型可写映像 我尝试过的事情: 我可以使用SwingFXUtils将BuffereImage转换为可写映像,但是在可写映像上没有简单的API可以从另一个可写映像中提取像素 我可以使用getData().getPixels(..)以int[]的形式从BuffereImage中获取像素 然而,WritableImage期望数据被紧密地压缩在单个整数中,即{ARGB,ARGB,…},而BuffereImage.ge
- 我可以使用SwingFXUtils将BuffereImage转换为可写映像,但是在可写映像上没有简单的API可以从另一个可写映像中提取像素
- 我可以使用getData().getPixels(..)以int[]的形式从BuffereImage中获取像素 然而,WritableImage期望数据被紧密地压缩在单个整数中,即{ARGB,ARGB,…},而BuffereImage.getData.getPixels以整数序列的形式返回数据,即{R,G,B,a,R,G,B,a,…) 很明显,我可以将数据强制转换为正确的格式,但这感觉不是很有效
我已经找到了使用哪种API的方法/指针,我很乐意自己编写代码。实际上有一个版本将另一个PixelReader作为输入
private void update(Image input, WritableImage output, int x, int y) {
int width = input.getWidth(null);
int height = input.getHeight(null);
WritableImage temp = new WritableImage(width, height); // same size as input
SwingFXUtils.toFXImage(fragment, temp);
output.getPixelWriter().setPixels(x, y, width, height, temp.getPixelReader(), 0, 0);
}