gpt4 book ai didi

java - 线程 "AWT-EventQueue-0"java.lang.IllegalArgumentException : im == null 中的异常

转载 作者:行者123 更新时间:2023-11-29 05:41:36 28 4
gpt4 key购买 nike

您好,我正在做一个项目,我需要更改图像的 BASE64 字符串 (jpg)...显示正确..但是当我更改我的 BASE64 字符串时出现上述异常..我搜索了很多并且开始知道当 ByteStream 不是 jpeg,png,gif ..等时 im==null 出现..那又怎样如果我有一种新型的 ByteStream...我应该使用什么??或者我的 BASE64 字符串是什么,我需要将其转换为图像..那我该怎么做呢??

这是我的代码片段:这是转换BASE64字符串到图像

 public  static BufferedImage decodeToImage(String imageString) throws IOException {
BufferedImage image = null;
byte[] imageByte;
try {
BASE64Decoder decoder = new BASE64Decoder();
imageByte = decoder.decodeBuffer(imageString);
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
image = ImageIO.read(bis);
bis.close();
}
catch (Exception e) {
e.printStackTrace();
}

ImageIO.write(image, "jpg", new File("d:/CopyOfTestImage.jpg"));

return image;
}

最佳答案

看看 Javadocs for ImageIO.read :

Returns a BufferedImage as the result of decoding a supplied InputStream with an ImageReader chosen automatically from among those currently registered. The InputStream is wrapped in an ImageInputStream. If no registered ImageReader claims to be able to read the resulting stream, null is returned. [emphasis mine]

read 方法可以返回 null,但您并未对此进行检查。事实上,该方法可能会返回 null,这就是为什么 ImageIO.write 在您将 null 传递给它时抛出异常的原因。

首先,您需要检查错误条件并适本地处理它们(包括 null 返回,还包括抛出的任何异常,您当前捕获并忽略这些异常)。

现在,如果您从 ImageIO.read 返回 null,则意味着您传递给 read 方法的字节似乎不是任何已知格式的有效图像。您需要更详细地查看您对 base64 字符串所做的修改,并确保您所做的是有效的,并生成有效的图像。或者,如果您抛出了一些其他异常,则需要适本地处理它。

(作为一般规则,不要丢弃/跳过错误,因为那样当出现问题时您不知道为什么!)

关于java - 线程 "AWT-EventQueue-0"java.lang.IllegalArgumentException : im == null 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17362101/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com