java - 如何将图像从 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 图像。希望您能够帮助我。
解决方案
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
将图像写入磁盘。有关详细信息,请参阅写入/保存图像
推荐阅读
- image - 从api获取图像以及如何在flutter中设置每个图像的动态高度?
- java - 为什么当我在我的应用程序中按下任何按钮时没有音频播放?
- r - 如何使用与相对丰度图相对应的颜色标签制作复合图例?
- javascript - 在没有 USB 和 Expo 的 iPhone 上执行 react-native 调试代码
- python - 避免 NumericProperty 的绑定递归
- sql - 如何从站点的 sql 数据库中删除病毒?
- xpath - 如何使用 xpath 获取 youtube 标题
- java - 每次循环确定一个新点(带坐标),停在起点
- xml - 生成 xml 时缺少 xml 声明/标头?
- angular - 角度路由嵌套组件不起作用