Как нарисовать изображение из BufferStrategy в файл Png?
Я создал Java-программу, которая генерирует снежинки, и я хотел бы сохранить изображение, созданное в виде файла.png, как только программа закончит рисование.
Я искал в Интернете, но я нашел только программы, использующие BufferedImage, в то время как я использую BufferStrategy, поэтому я не знаю точно, с чего начать.
Метод draw в моей программе использует BufferStrategy для создания компонента Graphics. Например, чтобы нарисовать простую линию, метод:
bs = display.getCanvas().getBufferStrategy();
if (bs == null) {
display.getCanvas().createBufferStrategy(3);
return;
}
g = bs.getDrawGraphics();
g.clearRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.drawLine(0, 0, 50, 50);
Я хотел бы получить точную копию того, что было нарисовано на экране программой, для сохранения в виде изображения в формате.png. Надеюсь, ты сможешь мне помочь.
2 ответа
Почему бы не сделать снимок экрана и затем вставить его в MS paint или в другое (и лучшее) программное обеспечение для редактирования изображений, такое как Photoshop или Fire Alpaca? Это должно решить вашу проблему.
Общий знаменатель между BufferedStrategy
а также BufferedImage
является Graphics
, поэтому вы хотите написать процедуру рисования, так что вы можете просто передать ссылку на Graphics
к этому
public void render(Graphics g) {
g.clearRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.drawLine(0, 0, 50, 50);
}
Тогда вы можете передать любой контекст, который хотите.
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_RGB);
Graphics2D g2d = img.createGraphics();
render(g2d);
g2d.dispose();
Тогда вы можете использовать ImageIO.write
записать образ на диск. См. Запись / сохранение изображения для более подробной информации.