我在将缓冲图像写入 jpg
文件时遇到了一些问题。
在我的方法中,我得到一个 bufferedimage
作为我需要写入文件的参数-
这是我正在做的:
public boolean writeToFile(BufferedImage buff,String savePath) {
try {
System.out.println(buff.toString());
ImageIO.write(buff, ".jpg", new File(savePath));
return true;
} catch (Exception e) {
e.printStackTrace();
}
}
这是 buff.toString()
打印的内容:
BufferedImage@8046f4: type = 1 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0 IntegerInterleavedRaster: width = 1024 height = 172 #Bands = 3 xOff = 0 yOff = 0 dataOffset[0] 0
程序运行正常,没有任何异常,但生成的jpg文件大小为0字节
我尝试在不使用 ImageIO 的情况下编写图像:
public boolean writeToFile(BufferedImage buff,String savePath) {
try {
System.out.println("got image : " + buff.toString());
Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter)iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(.5f);
File file = new File(savePath);
FileImageOutputStream output = new FileImageOutputStream(file);
writer.setOutput(output);
IIOImage image = new IIOImage(buff, null, null);
writer.write(null, image, iwp);
writer.dispose();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
这绝对没问题。
为什么它不能与 ImageIO 一起使用?
最佳答案
从您的格式名称中删除 .
。
ImageIO.write(buff, "jpg", new File(savePath));
关于java - ImageIO 无法将缓冲图像写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530901/