【问题标题】:How to load/save an Image from a JPanel如何从 JPanel 加载/保存图像
【发布时间】:2012-10-12 22:33:03
【问题描述】:

我缺少导出文件代码,但我不知道需要添加什么。我在 JPanel -> 面板中有一个绘制的图像,并希望将该图像保存到我的桌面中。我需要添加什么?

JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(panel);

我已将以下代码添加到我的paintComponent 方法中:

bi = new BufferedImage(panel.getSize().width,panel.getSize().height,
          BufferedImage.TYPE_INT_ARGB);
g = bi.createGraphics();

然后保存按钮执行此操作...我还缺少什么?或者做得不正确。

JFileChooser chooser = new JFileChooser();
chooser.showSaveDialog(panel);

try{ImageIO.write(bi,"png",new File("test.png"));}catch (Exception ex) {}

【问题讨论】:

  • 看看this,如果是同样的问题,请告诉我
  • @MadProgrammer 现在是一个鼓舞人心的答案,比它得到的“我和其他一些'家伙'”投票更值得。

标签: java image swing jpanel javax.imageio


【解决方案1】:

您的问题是缺少一些重要信息:您是如何在 JPanel 上绘图的?在我看来,聪明的方法是绘制一个 BufferedImage,然后使用 ImageIO.write(...) 简单地将 BufferedImage 保存到文件中

编辑
你说:

我只是在扩展 JPanel 的类上绘制多边形。我通过paintComponent 方法创建它们。

再次,我建议您将它们绘制到 BufferedImage,方法是获取其 Graphics 上下文,使用此 Graphics 对象绘制到图像,然后释放 Graphics 对象。您可以通过调用g.drawImage(...) 在 JPanel 的paintComponent(...) 方法中显示 BufferedImage。然后,如果您想保存绘图,只需保存 BufferedImage。

【讨论】:

  • 我只是在扩展 JPanel 的类上绘制多边形。我通过paintComponent 方法创建它们。我有一个保存按钮,可以运行上面的代码。
  • @James:请在编辑我的答案时重复我的建议。
  • “聪明的方法是绘制成一个 BufferedImage,然后简单地保存 BufferedImage” 示例见this answer。或者,要获得面板的快照(不太可取),请参阅this answer
  • 我已经更新了到目前为止的内容,希望我走在正确的轨道上,但仍然缺少一些东西。
  • "仍然缺少一些东西。" 改变.. catch (Exception ex) {}catch (Exception ex) { ex.printStackTrace(); }
猜你喜欢
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
相关资源
最近更新 更多