2016-04-13 8 views
0

Ich habe den ganzen Tag auf SO und Oracle Lesen bis zu lernen, wie Metadaten aus JPG-Bild zu extrahieren (GPS-Daten in am Bild eingebettet Extrahieren). Ich bin in einer Umgebung, in der ich nicht viele Optionen für Bibliotheken von Drittanbietern habe.Java Imagereader lieferte keine Bilder

stolperte ich über die ImageIO, Imagereader, IIOMetadata Kombination aber Probleme habe:

File file = new File("/home/djtorrey/Pictures/test.jpg"); 
    System.out.println(file.isFile()); 
    ImageInputStream iis = ImageIO.createImageInputStream(file); 

    Iterator readers = ImageIO.getImageReadersByFormatName("jpg"); 
    ImageReader reader = (ImageReader)readers.next(); 

    reader.setInput(iis,true); 
    int value = reader.getNumImages(false); 
    System.out.println(value); 

Dies ist der Code, den ich gerade getestet wird. Wie Sie sehen können, erstelle ich ein Dateiobjekt, das auf das Bild zeigt, überprüft, ob es es als Datei erkennt (und tut dies) und erstellt dann einen ImageInputStream basierend auf der Datei. Ich habe überprüft, dass es nicht beschädigt ist, indem ich die Datei in ein BufferedImage-Objekt schiebe und Daten daraus lese.

packe ich die Imagereader für ein jpg, stellen Sie den Imagereader Eingang zum ImageInputStream, und dann überprüfen Sie die Anzahl der Bilder, es sieht.

sollte ich 1 sehen werden, die die ein Bild, das ich auf mich zeigen, aber es hält eine -1 zurückkehrt, was anzeigt, gibt es keine Bilder.

BLUF: Was ich in dem obigen Code falsch mache, dass es nicht richtig, das Bild ist zu sehen, ich zeigen werde?

+1

Hat 'reader.getNumImages (true)' Rückkehr einen anderen Wert? – VGR

+1

** der Rückgabewert -1 zeigt nur, dass eine Suche erforderlich ist, die Anzahl der verbleibenden Bilder in dem Strom zu bestimmen **: [https://docs.oracle.com/javase/7/docs/api/javax/imageio /ImageReader.html#getNumImages(boolean)](https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageReader.html#getNumImages(boolean)) – Gilfoyle

+0

@VGR nein, es ist ein - 1. –

Antwort

2

der Rückgabewert -1 zeigt nur, dass eine Suche erforderlich ist, die Anzahl der verbleibenden Bilder in dem Strom zu bestimmen: ImageReader Javadoc