将bufferedimage保存到gif

时间:2013-08-01 19:00:54

标签: java graphics jpanel bufferedimage

我有一个应用程序在JPanel上绘制图像。我想完全处理GUI,因此只从代码调用应用程序,没有用户界面,因此图像只保存到gif文件中。

我已尝试使用this question,中的代码,当我从旧GUI中调用save gif代码时似乎工作正常。但是,当我删除GUI时,保存gif代码似乎不起作用,我想知道是否这可能是因为它试图打印的JPanel实际上没有像JFrame那样进入GUI容器等。

我没有发布代码的原因是它太冗长了,我只是要求一个简单的样板答案。

我已经为其他应用程序试过了writeablerasters。但这需要一个针对此应用程序的主要重新编码项目,该项目使用graphics.drawLine()方法进行绘制。任何人都可以建议一种代码有效的方式来获取“幻影”JPanel的内容,将其放入BufferedImage,然后将其保存为gif,而不必将JPanel放在GUI中吗?

2 个答案:

答案 0 :(得分:1)

由于您的应用程序使用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"));

答案 1 :(得分:0)

然而,如果没有任何示例代码,这很难回答。

如果您尝试渲染的组件未显示在屏幕上,则可能是它没有布局。

在绘画之前,你应该确保你调整组件的大小。

componentToBePainted.setSize(componentToBePainted.getPreferredSize());

您还应该使用printprintAll而不是paint。如果未附加到本地对等方,paint可能会导致问题