我有一个.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。
你知道我做错了吗?
保
答案 0 :(得分:2)
让WritableImage
为您执行此操作:
Image image = new Image("file:ressources/spritesheets/Zelda_Overworld.png");
Image tile = new WritableImage(image.getPixelReader(), x, y, width, height);
根据tile
的使用情况,这可能根本不需要。 ImageView
有viewport
property,可让您选择要显示的图片部分,GraphicsContext
提供drawImage
方法的重载版本,以便将图像的一部分绘制到Canvas
。