Answers:
File outputfile = new File("image.jpg");
ImageIO.write(bufferedImage, "jpg", outputfile);
NullPointerException
,使用if (outputfile.exists())
您可以BufferedImage
使用javax.imageio.ImageIO
该类的write方法保存对象。该方法的签名如下:
public static boolean write(RenderedImage im, String formatName, File output) throws IOException
这im
是RenderedImage
要写入的,formatName
是包含格式的非正式名称(例如png)的String,并且output
是要写入的文件对象。PNG文件格式方法的用法示例如下所示:
ImageIO.write(image, "png", file);
答案就在Java文档的“编写/保存图像”教程中。
的Image I/O
类提供了保存图像下面的方法:
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
}
write
用try块包围调用很重要,因为根据API,该方法将引发IOException
“如果在写入过程中发生错误”
还详细说明了该方法的目标,参数,返回值和引发:
使用支持给定格式的任意ImageWriter将图像写入File。如果已经存在文件,则将其内容丢弃。
参数:
im-要写入的RenderedImage。
formatName-一个字符串,包含格式的非正式名称。
输出-要写入的文件。
返回值:
如果找不到合适的作者,则返回false。
抛出:
IllegalArgumentException-如果任何参数为null。
IOException-如果在写入过程中发生错误。
但是,formatName
可能看起来仍然比较模糊和模棱两可。本教程将其清除了一点:
ImageIO.write方法调用编写PNG编写器插件的实现PNG的代码。之所以使用“插件”一词,是因为映像I / O是可扩展的,并且可以支持多种格式。
但是始终存在以下标准图像格式插件:JPEG,PNG,GIF,BMP和WBMP。
对于大多数应用程序来说,使用这些标准插件之一就足够了。它们具有随时可用的优势。
但是,您可以使用其他格式:
Image I / O类提供了一种插入支持其他可用格式的方式,并且存在许多此类插件。如果您对可用于加载或保存在系统中的文件格式感兴趣,则可以使用ImageIO类的getReaderFormatNames和getWriterFormatNames方法。这些方法返回一个字符串数组,列出了此JRE支持的所有格式。
String writerNames[] = ImageIO.getWriterFormatNames();
返回的名称数组将包括已安装的所有其他插件,并且这些名称中的任何一个都可以用作选择图像编写器的格式名称。
对于一个完整而实际的示例,可以参考Oracle的SaveImage.java
示例。
创建一个java.awt.image.bufferedImage并将其保存到文件中:
import java.io.*;
import java.awt.image.*;
import javax.imageio.*;
public class Main{
public static void main(String args[]){
try{
BufferedImage img = new BufferedImage(
500, 500, BufferedImage.TYPE_INT_RGB );
File f = new File("MyFile.png");
int r = 5;
int g = 25;
int b = 255;
int col = (r << 16) | (g << 8) | b;
for(int x = 0; x < 500; x++){
for(int y = 20; y < 300; y++){
img.setRGB(x, y, col);
}
}
ImageIO.write(img, "PNG", f);
}
catch(Exception e){
e.printStackTrace();
}
}
}
笔记:
在您的代码中:
import static org.imgscalr.Scalr.*;
public static BufferedImage resizeBufferedImage(BufferedImage image, Scalr.Method scalrMethod, Scalr.Mode scalrMode, int width, int height) {
BufferedImage bi = image;
bi = resize( image, scalrMethod, scalrMode, width, height);
return bi;
}
// Save image:
ImageIO.write(Scalr.resize(etotBImage, 150), "jpg", new File(myDir));