java - 异常“java.lang.IllegalArgumentException: image == null!” 在 ImageIO 中
问题描述
我正在尝试png
从字节数组中写入文件。
我的应用程序抛出以下异常"java.lang.IllegalArgumentException: image == null!" in ImageIO
正如您在下面的代码片段中所见,我使用随机字节数组测试了我的解决方案,但仍然抛出异常。
你能帮我确定它为什么会被抛出吗?
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
public class Main {
public static void main(String[] args) throws IOException {
String fn = new String("C:\\Users\\frogwine\\Desktop\\P1.png");
byte [] data = new byte[256];
Random r = new Random();
r.nextBytes(data);
ByteArrayInputStream bis = new ByteArrayInputStream(data);
ByteArrayInputStream input_stream= new ByteArrayInputStream(data);
BufferedImage final_buffered_image = ImageIO.read(input_stream);
ImageIO.write(final_buffered_image , "png", new File(fn) );
}
}
堆栈跟踪:
"C:\Program Files\Java\jdk-13.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3\lib\idea_rt.jar=57315:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\frogwine\Documents\deneme\out\production\deneme com.berk.Main
Exception in thread "main" java.lang.IllegalArgumentException: image == null!
at java.desktop/javax.imageio.ImageTypeSpecifier.createFromRenderedImage(ImageTypeSpecifier.java:925)
at java.desktop/javax.imageio.ImageIO.getWriter(ImageIO.java:1608)
at java.desktop/javax.imageio.ImageIO.write(ImageIO.java:1540)
at com.berk.Main.main(Main.java:23)
Process finished with exit code 1
解决方案
嗯,这并不奇怪。从ImageIO.read文档中:
如果没有注册的 ImageReader 声称能够读取结果流,则返回 null。
将随机字节写入数组不会以任何格式创建有效的图像数据,因为图像格式具有至少由标头组成的标准结构。因此,ImageIO.read
返回 null。
推荐阅读
- elasticsearch - grok 模式在不考虑空间的情况下获取整个文本
- amazon-web-services - lambda 无法访问受云端限制的 s3 存储桶
- javascript - jQuery - 检查单击了哪个元素
- javascript - IIFE 的 this 是否总是指向全局对象?
- java - 使用 TextInputEditText 在 RecycleView 中遇到问题
- python - 在内部公司服务器上运行 Python Web 应用程序
- sql - 将字符连接并添加到 SQL 中的整数列
- c++ - union 给出了字符串数据类型的错误,但适用于 char 数据类型
- java - java.lang.NoClassDefFoundError: gherkin/IGherkinDialectProvider 在 Eclipse 中执行 testrunner 类时
- css - CSS Paged Media:无法实现所需的中断行为(break-after,break-before什么都不做)