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

如何使用PixelReader和JavaFX提取子图像?,java,image,javafx,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.getByteBgraIns

我有一个.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));
我可以显示图像,缓冲区似乎包含值,但我不能显示平铺,平铺。getPixelReader()返回null,平铺。getWidth()和平铺。getHeight()返回0.0

你知道我做错了什么吗

保罗

让我们为你做这件事:

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

根据
平铺的使用情况,可能根本不需要执行此操作
ImageView
具有允许您选择要显示的图像部分的功能,并且
GraphicsContext
提供了
drawImage
方法的重载版本,用于将图像的一部分绘制到
画布上

非常感谢!我不知道为什么另一个解决方案不起作用,但你的解决方案更简单,效果也更好。我使用平铺来构建一些地图,所以我直接使用图像来进行最终显示,但是您直接从精灵表显示平铺的解决方案看起来非常有趣!