答案在于Java Documentation的编写/保存图像教程。
SaveImage.java类提供以下保存图像的方法:
static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException
该教程解释了这一点
BufferedImage类实现RenderedImage接口。
所以它可以在方法中使用。
例如,
try {
BufferedImage bi = getMyImage(); // retrieve image
File outputfile = new File("saved.png");
ImageIO.write(bi, "png", outputfile);
} catch (IOException e) {
// handle exception
}
使用try块包围SaveImage.java调用很重要,因为根据API,如果在写入期间发生错误,该方法将抛出IOException
还解释了方法的目标,参数,返回和抛出,更详细:
使用支持给定格式的任意ImageWriter将图像写入文件。 如果已存在文件,则其内容将被丢弃。
参数:
im - 要写入的RenderedImage。
formatName - 包含格式的非正式名称的String。
output - 要写入的文件。
返回:
如果找不到合适的作者,则为false。
抛出:
IllegalArgumentException - 如果任何参数为null。
IOException - 如果在写入期间发生错误。
但是,SaveImage.java可能看起来仍然模糊不清; 教程清理了一下:
ImageIO.write方法调用实现PNG编写“PNG编写器插件”的代码。 由于Image I / O是可扩展的并且可以支持多种格式,因此使用术语插件。
但是以下标准图像格式插件:JPEG,PNG,GIF,BMP和WBMP始终存在。
对于大多数应用程序,使用这些标准插件之一就足够了。 它们具有易于获得的优点。
但是,您可以使用其他格式:
Image I / O类提供了一种插入支持可以使用的其他格式的方法,并且存在许多这样的插件。 如果您对可以在系统中加载或保存的文件格式感兴趣,可以使用ImageIO类的getReaderFormatNames和getWriterFormatNames方法。 这些方法返回一个字符串数组,列出了此JRE支持的所有格式。
SaveImage.java
返回的名称数组将包括已安装的任何其他插件,这些名称中的任何一个都可以用作格式名称来选择图像编写器。
有关完整且实用的示例,可以参考Oracle的SaveImage.java示例。