Image IO 写不写

Image IO Write not writing

基本上我试图保存我在 JFrame 中编辑过的图像,所以我有一个带有保存项的菜单,我有一个为保存项设置的动作侦听器,一切正常,文件选择器出现了,我可以 select 我想保存它的地方,唯一的问题是当我点击保存时,它不在那里。这是我的代码,我是不是遗漏了什么?

 if(e.getSource().equals(Save)){
        JFileChooser keep = new JFileChooser();
        keep.setSelectedFile(new File ("newImage.jpg"));
        FileNameExtensionFilter  filters = new FileNameExtensionFilter("jpeg", "jpg");
        keep.setFileFilter(filters);
        File output = keep.getSelectedFile();

        int count = keep.showSaveDialog(keep);
        BufferedImage out = filteredImage;

        if (count == JFileChooser.CANCEL_OPTION){

        }
        else{
            try{
                ImageIO.write(out, "jpg", output);

                //I put this here to see if I was even reaching the method
                System.out.println("writing method");
            }catch(Exception d){
            }
        }
    }

因此,您获得了对 selectedFile...

的引用
File output = keep.getSelectedFile();

您显示对话框...

int count = keep.showSaveDialog(keep);
BufferedImage out = filteredImage;

然后您尝试保存图像...

ImageIO.write(out, "jpg", output);

...等等,什么?!假设 getSelectedFile 不是 null,您如何知道实际保存图像的位置?

这个过程应该稍微颠倒一下...

showSaveDialog
if (accepted) {
    saveFile = getSelectedFile
    ImageIO.write(img, "jpg", saveFile);
}

作为基本伪代码示例