Как извлечь образ с помощью PixelReader и JavaFX? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть изображение .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 () возвращает ноль, tile.getWidth () и tile.getHeight () возвращают 0.0.

Знаете ли вы, что я делаю неправильно?

Пол

1 Ответ

0 голосов
/ 10 мая 2018

Пусть WritableImage сделает это за вас:

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

В зависимости от использования tile выполнение этого может не требоваться вообще. ImageView имеет свойство viewport , позволяющее выбрать часть изображения для отображения, а GraphicsContext предоставляет перегруженную версию метода drawImage для рисования части изображения в Canvas.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...