如何解决: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:伪输入色彩空间,看完以上分享之后,大家应该都知道怎么解决了吧。

上一篇:怎么操作从日期中减去天数

下一篇:如何使用自定义登录页面配置Spring Security?

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载