java - NullPointerException 使用 ImageIO.read

标签 java nullpointerexception javax.imageio

我在尝试读取图像文件时遇到了 NPE,但我终究无法弄清楚原因。这是我的台词:

BufferedImage source = ImageIO.read(new File(imgPath));

imgPath 基本上保证是有效的,并且在它到达这里之前它从服务器复制文件。当它到达那一行时,我得到了这个堆栈跟踪:

Exception in thread "Thread-26" java.lang.NullPointerException
    at com.ctreber.aclib.image.ico.ICOReader.getICOEntry(ICOReader.java:120)
    at com.ctreber.aclib.image.ico.ICOReader.read(ICOReader.java:89)
    at javax.imageio.ImageIO.read(ImageIO.java:1400)
    at javax.imageio.ImageIO.read(ImageIO.java:1286)
    at PrintServer.resizeImage(PrintServer.java:981)    <---My function
    <Stack of rest of my application here>

另外,这被扔进了我的输出窗口:

无法创建 ICOFile:无法读取字节:2

我不知道发生了什么,特别是因为 File 构造函数成功了。我似乎找不到任何遇到过类似问题的人。有人有什么想法吗? (Java 5,如果这有什么不同的话)

最佳答案

我又查了一下,发现您可以指定将使用哪个 ImageReader ImageIO 并以这种方式读取它。我浏览了我们的代码库,发现我们已经有了一个功能,可以完全按照我在这里尝试完成的目标进行操作。仅供遇到类似问题的其他人引用,这里是代码的关键(上面定义了一些废话,但这应该对尝试这样做的任何人有所帮助):

File imageFile = new File(filename);
Iterator<ImageReader> imageReaders = ImageIO.getImageReadersByFormatName("jpeg");
if ( imageReaders.hasNext() ) {
    imageReader = (ImageReader)imageReaders.next();
    stream = ImageIO.createImageInputStream(imageFile);
    imageReader.setInput(stream, true);
    ImageReadParam param = imageReader.getDefaultReadParam();
    curImage = imageReader.read(0, param);
}

感谢大家的建议和帮助。

关于java - NullPointerException 使用 ImageIO.read,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878521/

相关文章:

java - 分割字符串时的"java.lang.NullPointerException"

Java JDT 检测简单语句

java - JSP 代码中的大括号

启动适配器时 getapplicationContext() 出现 Java.lang.NullPointerException

java - 什么是NullPointerException,我该如何解决?

android - 来自 findViewById 的 NullPointer 错误

java - 图像IO异常

java - 列出不分配的 impl

java - ImageIO read() 和 write() 的 Mimetypes