如何将图像从BufferStrategy绘制到Png文件?

时间:2019-01-29 15:23:06

标签: java graphics awt png bufferstrategy

我已经创建了一个生成雪花的Java程序,并且一旦程序完成绘制,我想将创建的图像保存为.png文件。

我在Internet上进行了搜索,但是我发现只有使用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 个答案:

答案 0 :(得分:0)

为什么不截屏然后粘贴到MS Paint或其他一些(更好的)图像编辑软件(如Photoshop或羊驼毛)上?那应该可以解决您的问题。

答案 1 :(得分:0)

BufferedStrategyBufferedImage之间的公分母是Graphics,因此您想编写一个绘制例程,以便您可以简单地将Graphics的引用传递给它< / p>

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将映像写入磁盘。有关更多详细信息,请参见Writing/Saving an Image