【发布时间】:2013-06-05 01:16:27
【问题描述】:
我在使用简单的绘图程序保存 BufferedImage 时遇到了问题。当我从绘画中保存图像时,例如我之前绘制的蛇的图片,它可以很好地保存图像,但它并没有像您想象的那样保存它。它不是将图像保存到 C:\ 驱动器(或用户可能使用的任何驱动器),而是将图像保存到 eclipse 工作区。这当然是不可接受的,因为这需要直接提供给用户的主要访问位置。这是用于保存缓冲图像的方法。
static void saveImage() {
try {
ImageIO.write(background, "png",
new File(fileName + ".png"));
} catch (IOException e) {
e.printStackTrace();
}
}
所以在这里,背景显然是正在保存的图像,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();
}
`
【问题讨论】:
-
这很糟糕。问题出在
fileName值中,您说之前使用此处不重要的先前方法保存。嗯,帮助您回答这个问题很重要。请提供您如何保存此变量。 -
@LuiggiMendoza 根据要求,问题已编辑。
-
工作区是在您的 c: 驱动器上。您需要了解启动配置中设置的绝对路径名和相对路径名的概念以及当前工作目录的概念。
标签: java save bufferedimage javax.imageio