如何解决:javax.imageio.IIOException:伪输入色彩空间
来源:爱站网时间:2021-12-08编辑:网友分享
如何解决:javax.imageio.IIOException:伪输入色彩空间,这个问题是爱站技术小编怎么都想不明白的问题,如今解答出来了,供大家参考一下,希望能给大家带来一定的帮助。
问题描述
我下面有一个函数generateImageOutput将BufferedImage写入jpeg文件。
public boolean generateImageOutput(BufferedImage image, String filename){
//The image is written to the file by the writer
File file = new File( projectFolder+"/data/"+filename+".jpg");
//Iterator containing all ImageWriter (JPEG)
Iterator encoder = ImageIO.getImageWritersByFormatName("JPEG");
ImageWriter writer = (ImageWriter) encoder.next();
//Compression parameter (best quality)
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(1.0f);
//Try to write the image
try{
ImageOutputStream outputStream = ImageIO.createImageOutputStream(file);
writer.setOutput(outputStream);
writer.write(null, new IIOImage(image, null, null), param);
outputStream.flush();
writer.dispose();
outputStream.close();
}catch(IOException e){
e.printStackTrace();
System.out.println(e.toString());
return false;
}
return true;
}
它对某些人有用,但是对于从base64字符串转换的BufferedImage却失败:
String encodedString = JSON.parseObject(string).getString("image");
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
ByteArrayInputStream bis = new ByteArrayInputStream(decodedBytes);
buffered_image = ImageIO.read(bis);
[当使用generateImageOutput将上述buffered_image写入jpeg时,会引发异常:
javax.imageio.IIOException: Bogus input colorspace
at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeImage(Native Method)
at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeOnThread(JPEGImageWriter.java:1007)
at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:371)
字符串encodingString没有问题,我已成功将其在线转换为图像。
如何解决该异常?
思路:
最后,我发现原因是图像具有ALPHA通道。
以上内容就是爱站技术频道小编为大家分享的如何解决:javax.imageio.IIOException:伪输入色彩空间,看完以上分享之后,大家应该都知道怎么解决了吧。