java - Saving BufferedImages 将图像保存到 Java Eclipse 工作区而不是保存到 C 盘

标签 java save bufferedimage javax.imageio

我在使用简单的绘画程序保存 BufferedImage 时遇到问题。当我保存绘画中的图像(例如我之前画的蛇的图片)时,它可以很好地保存图像,但它不会以您想象的方式保存它。它将图像保存到 Eclipse 工作区,而不是将图像保存到 C:\驱动器(或用户可能使用的任何驱动器)。这当然是 Not Acceptable ,因为这需要直接提供给用户的主要访问地点。这是用于保存缓冲图像的方法。

static void saveImage() {
        try {
            ImageIO.write(background, "png",
                    new File(fileName + ".png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

所以在这里,background 显然是要保存的图像,png 是扩展名,fileName 是之前使用先前方法保存的字符串,这里并不重要。此方法将图像保存到 eclipse 工作区。这很糟糕。我们需要将其保存到默认驱动器。我该如何实现这个目标?如果您需要其他任何信息来帮助您回答问题,请告诉我。

编辑:因此,根据要求,这里是更改文件名的代码。它位于具有完全不同 UI 的不同类中,并且因为我不确定要发布多少内容,所以我将发布 actionListener 和 getName() 方法。这里发生的情况是,有一个 JTextField,一旦按下 JButton,就会从中提取字符串并将其用作 fileName 。代码如下:

`finishButton.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent e) {
                   ProgramUI.fileName = getName();
                   ProgramUI.fileHasName = true;
                   ProgramUI.saveImage();
                   frame.dispose();
               }
        });
    }

    public String getName() {
        return nameField.getText();
    }
`

最佳答案

为用户提供一个JFileChooser(如 this answer 中所示)以允许他们导航到路径并选择名称。

使用FileSystemView限制路径,如here所示.

关于java - Saving BufferedImages 将图像保存到 Java Eclipse 工作区而不是保存到 C 盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005996/

相关文章:

java - 如何从平衡二叉搜索树中按升序打印整数?

Java:即使单击 "No",退出操作上的 JFrame 仍会关闭

java - 在java中使用imgscalr API调整图像大小

java - Java中读取TIF图像的像素长宽比

java - 无法在 IntelliJ 中编译

java - 庞大的数字列表中最常重复的数字

Java,在对象中保存文件,无法检索它

javascript - 保存子窗口会保存父窗口(Javascript)

pdf - 在 MATLAB 中将 "heavy"图保存为 PDF - 渲染问题

java - 使用java 2D图形旋转的黑色区域?