如何使用PixelReader和JavaFX提取子图像?

时间:2018-05-10 14:01:12

标签: java image javafx

我有一个.png图像,我想使用PixelReader类提取该图像的一部分,并将其重建为图像:

Image image = new Image("file:ressources/spritesheets/Zelda_Overworld.png");
byte[] buffer = new byte[1024];
PixelReader pr = image.getPixelReader();
pr.getPixels(0, 0, 16, 16, PixelFormat.getByteBgraInstance(), buffer, 0, 64);
Image tile = new Image(new ByteArrayInputStream(buffer));

我可以显示图像并且缓冲区似乎包含值,但我无法显示 tile ,tile.getPixelReader()返回null,tile.getWidth()和tile.getHeight()返回0.0。

你知道我做错了吗?

1 个答案:

答案 0 :(得分:2)

WritableImage为您执行此操作:

Image image = new Image("file:ressources/spritesheets/Zelda_Overworld.png");
Image tile = new WritableImage(image.getPixelReader(), x, y, width, height);

根据tile的使用情况,这可能根本不需要。 ImageViewviewport property,可让您选择要显示的图片部分,GraphicsContext提供drawImage方法的重载版本,以便将图像的一部分绘制到Canvas