Java使用getResourceAsStream加载TIFF

时间:2016-04-25 10:10:26

标签: java nullpointerexception inputstream tiff javax.imageio

我在加载TIFF图像时遇到问题。 我使用ImageIO.read(Test.class.getResourceAsStream(url))来读取图像,使用JPEG它可以完美地工作,但是使用TIFF图像我得到NullPointerException。 JPEG图像和TIFF图像位于同一文件夹中。

编辑:Stacktrace

java.lang.NullPointerException 
    at de.test.test1.files.Konstantenbeleg.<init>(Konstantenbeleg.java:47) 
    at de.test.test1.files.Konstantenbeleg.<init>(Konstantenbeleg.java:72)
    at de.de.test.test1.worker.zv.WorkerZVDZService. sendFiles(WorkerZVDZService.java:119)
    at de.de.test.test1.worker.zv.WorkerZV.workJob(WorkerZV.java:73)
    at de.de.test.test1.listener.action.scan. MyScanJobListener.finalzeScan(MyScanJobListener.java:65)
    at de.de.test.test1.listener.action.scan. MyScanJobListener.scanJobNoMoreEvents(MyScanJobListener.java:156)
    at jp.co.ricoh.dsdk.core.function.ScanJobImpl.fire(Unknown Source)
    at jp.co.ricoh.dsdk.core.function.ScanJobImpl.access$200(Unknown Source)
    at jp.co.ricoh.dsdk.core.function.ScanJobImpl$JobEventHandler.exec(Unknown Source)
    at jp.co.ricoh.dsdk.core.manager.EventRunner$Dispatcher.processEvent(Unknown Source)
    at jp.co.ricoh.dsdk.core.manager.EventRunner$Dispatcher.run(Unknown Source)

1 个答案:

答案 0 :(得分:0)

正如您可以阅读JRE的Java Docs:

  

作为解码提供的结果返回BufferedImage   从这些中自动选择ImageReader的InputStream   目前已注册。 InputStream包含在   ImageInputStream中。如果没有注册的ImageReader声称能够   读取结果流,返回null。

来源:https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#read(java.io.InputStream)

如果没有为所需格式注册ImageReader,则此方法将返回null。

我看到标准JRE API中没有包含TIFF图像阅读器。 经过一些谷歌搜索我发现了这个: http://download.java.net/media/jai-imageio/javadoc/1.1/com/sun/media/imageio/plugins/tiff/package-summary.html

您问题的教育答案是:

获取ImageReader Impl。它可以解码TIFF图像。注册此ImageReader,以便ImageIO.read方法可以将此阅读器确定为TIFF图像的阅读器。