我想将帧图像存储在单击保存按钮时指定的文件名中,现在我将其作为“Screen.png”保存在计算机的 E 文件夹中,但我希望用户提供指定文件名并将图像保存到指定文件夹的选项。我该怎么做?
JFileChooser save = new JFileChooser();
int option = save.showSaveDialog(save);
if (option == JFileChooser.APPROVE_OPTION) {
try {
BufferedImage awtImage = new BufferedImage(frame.getWidth(),frame.getHeight(),BufferedImage.TYPE_INT_RGB);
BufferedWriter outFile = new BufferedWriter(new FileWriter(save.getSelectedFile().getPath()));
frame.paint(awtImage.getGraphics());
try {
ImageIO.write(awtImage, "png", new File("E://Screen.png"));
System.out.println("panel saved as image");
} catch (Exception evt) {
System.out.println("panel not saved" + evt.getMessage());
}
} catch (Exception ex) { // again, catch any exceptions and...
System.out.println(ex.getMessage());
}
}
最佳答案
只需使用 JFileChooser。
对 JFileChooser 的 show 的调用会阻塞线程,直到用户选择文件夹,因此您可以通过相同的方法直接使用所选文件。
ImageIO 类具有以下写入方法:
静态 boolean 写入(RenderedImage im,字符串格式名称,文件输出) 使用支持给定格式的任意 ImageWriter 将图像写入文件。
静态 boolean 写入(RenderedImage im,字符串格式名称,ImageOutputStream 输出) 使用支持给定格式的任意 ImageWriter 将图像写入 ImageOutputStream。
静态 boolean 写入(RenderedImage im,字符串格式名称,OutputStream 输出) 使用支持给定格式的任意 ImageWriter 将图像写入 OutputStream。
就您而言,BufferedWriter 是一个您可以使用的 OutputStream。
记住之后要刷新()和关闭()你的流。
编辑:答案
BufferedImage awtImage = new BufferedImage(frame.getWidth(),frame.getHeight(),BufferedImage.TYPE_INT_RGB);
BufferedWriter outFile = new BufferedWriter(new FileWriter(save.getSelectedFile().getPath()));
frame.paint(awtImage.getGraphics());
try {
ImageIO.write(awtImage, "png", new File("E://Screen.png"));
System.out.println("panel saved as image");
} catch (Exception evt) {
System.out.println("panel not saved" + evt.getMessage());
}
应该是:
BufferedImage awtImage = new BufferedImage(frame.getWidth(),frame.getHeight(),BufferedImage.TYPE_INT_RGB);
File selected = save.getSelectedFile();
frame.paint(awtImage.getGraphics());
try {
ImageIO.write(awtImage, "png", selected);
System.out.println("panel saved as image at: " + selected.getPath());
} catch (Exception evt) {
System.out.println("panel not saved" + evt.getMessage());
}
关于java - 保存时需要将帧作为图像保存在指定文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32896381/