java - 将缓冲图像保存为 gif

标签 java graphics jpanel bufferedimage

我有一个在 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/

相关文章:

c# - 当我最小化我的应用程序时,我所有的绘图都消失了

java - 如何在 java netbeans 中保存包含组合框和文本框的 jpanel?

java - 如何让 JButton 在再次单击时重复其操作?

java - 打开应用程序时更改 tabpane javafx 中的选项 View

java - Spring Thymeleaf - bean 类错误属性无效

java - java 的 Finished 部分握手失败,但curl 则不然

javascript - 如何使用 PIXI.js Graphics 更改线条样式?

java - 将Figure添加到JPanel,然后添加到另一个JPanel,然后添加到JFrame

Java集布局

java - JFrame 展开后,JPanel 才会显示