我有一个在 JPanel 上绘制图像的应用程序。我想完全放弃 GUI,以便仅从代码中调用应用程序,没有用户界面,并且图像仅保存到 gif 文件中。
我已经尝试过 this question, 中的代码当我从旧 GUI 中调用保存 gif 代码时,它似乎工作正常。但是,当我删除 GUI 时,保存 gif 代码似乎不起作用,我想知道这是否可能是因为它尝试打印的 JPanel 实际上并未将其发送到 GUI 容器(如 JFrame 等)。
我没有发布代码的原因是它太冗长了,我只是要求一个简单的样板答案。
我已经针对其他应用程序尝试了 writeablerasters。但这需要为此应用程序进行一个主要的重新编码项目,该项目使用graphics.drawLine()方法进行绘制。任何人都可以建议一种代码高效的方法来获取“幻影”JPanel 的内容,将其放入 BufferedImage 中,然后将其另存为 gif,而无需将 JPanel 放入 GUI 中?
最佳答案
由于您的应用程序利用 JPanel
,因此它只需要一个 Graphics
对象。您可以使用 BufferedImage 中的一个,然后将其保存到文件中。示例代码:
BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
Graphics g = image.getGraphics();
// Pass this graphics object to your application to perform the drawing
g.setColor(Color.red);
g.drawRoundRect(10, 10, 20, 20, 5, 5);
// save it to disk
ImageIO.write(image, "png", new File("test.png"));
关于java - 将缓冲图像保存为 gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18002375/