使用JFileChooser使用Java保存png图像

时间:2013-11-21 18:37:57

标签: java image swing file-io javax.imageio

我正在尝试保存由BufferedImage形成的图像。我通过

获得BufferedImage
(BufferedImage) fg;

fg是我的jPanel图形的图像。我通过直接硬编码路径来成功保存图像,如下所示:

ImageIO.write((BufferedImage)fg,"png",new File("C:\\Users\\Geiger\\Documents\\test.png"));

但是当我尝试将JFileChooser添加到混合中时,保存的图像显示为空白,只有jPanel的背景颜色。

我尝试使用JFileChooser的代码如下:

JFileChooser jfc = new JFileChooser();
int retVal = jfc.showSaveDialog(null);
if(retVal==JFileChooser.APPROVE_OPTION){
    File f = jfc.getSelectedFile();
    String test = f.getAbsolutePath();
    ImageIO.write((BufferedImage)fg,"png",new File(test));
 }

编辑:在这个问题上澄清一点: 问题不在于文件没有显示出使用JFileChooser对象时图形不会出现在图像上。

当JFrame有鼠标按下事件时,我更新了我的图像:

fg = jPanel2.createImage(jPanel2.getWidth(), jPanel2.getHeight());

3 个答案:

答案 0 :(得分:2)

尝试使用这行代码我认为这就是你需要的:

ImageIO.write(buffer, "png", fileDialog.getSelectedFile());

希望有所帮助

答案 1 :(得分:0)

Graphics2D graphics2D = image.createGraphics();
scribblePane.paint(graphics2D);

使用这两行代码添加图形。

答案 2 :(得分:0)

这对我有用

JFileChooser fileChooser = new JFileChooser();
    fileChooser.setFileFilter(new FileNameExtensionFilter("*.png", "png"));
    if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
        File file = fileChooser.getSelectedFile();
        try {
            ImageIO.write((BufferedImage) image, "png", new File(file.getAbsolutePath()));
        } catch (IOException ex) {
            System.out.println("Failed to save image!");
        }
    } else {
        System.out.println("No file choosen!");
    }
}
相关问题