2016-04-25 16 views
0

Ich habe ein Problem beim Laden eines TIFF-Bilds. Ich benutze ImageIO.read(Test.class.getResourceAsStream(url)), um ein Bild zu lesen, mit einem JPEG funktioniert es perfekt, aber mit einem TIFF-Bild bekomme ich eine NullPointerException. Das JPEG-Bild und das TIFF-Bild befinden sich im selben Ordner.Java laden TIFF mit getResourceAsStream

Edit: 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) 
+0

Wohin führt Ihr Stack? Erhalten Sie die 'NullPointerException' aus dem' ImageIO.read() 'Aufruf oder einer anderen Zeile? Höchstwahrscheinlich ist @ReneM korrekt, Sie müssen ein TIFF ImageReader-Plugin installieren, aber es gibt nicht genug Details in der Frage, um es sicher zu sagen. – haraldK

Antwort

0

Wie Sie in der Java-Docs von JRE zu lesen:

Gibt eine BufferedImage als Ergebnis der Decodierung eines gelieferten Input mit einem Imagereader automatisch ausgewählt aus Diese sind derzeit registriert. Der InputStream ist in einen ImageInputStream eingeschlossen. Wenn kein registrierter ImageReader angibt, dass den resultierenden Stream lesen kann, wird null zurückgegeben.

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

Diese Methode null zurück, wenn es keine Imagereader für das gewünschte Format registriert ist.

Wie ich sehe, ist kein TIFF-Bildleser in der Standard-JRE-API enthalten. Nach einigen googeln fand ich dies: http://download.java.net/media/jai-imageio/javadoc/1.1/com/sun/media/imageio/plugins/tiff/package-summary.html

Die pädagogische Antwort auf Ihre Frage ist:

einen Imagereader Impl Holen. welches TIFF Bilder decodieren kann. Registrieren Sie diesen ImageReader, damit die ImageIO.read-Methode diesen Leser als den für Ihr TIFF-Bild bestimmen kann.

+0

Was meinen Sie eigentlich mit diesem ImageReader? Ich habe die Lib JAI in meinem Projekt und das Lib-Plugin imageio-tiff. Den Nullpointer bekomme ich, wenn ich versuche, toString() Methode zu verwenden. –

+0

Schauen Sie hier: http://stackoverflow.com/questions/17178591/how-to-add-tiff-imagereader-to-those-registered-in-griles/17186178#17186178 –