2016-11-07 1 views
0

Konnte den Teil nicht finden, um das gesamte Array der Methode getTagName() auszugeben, da es in der Form eines Tags und nicht eines Strings ist.Wie kann ich das Array des Exif-Tags über diese Metadaten-Extraktorbibliothek anzeigen?

https://drewnoakes.com/code/exif/

try { 
    InputStream is = new URL("http://www.dbituser1.dbitmobileappchallenge.com/uploadimage1/uploads/sample_0%20-%20Copy.jpg").openStream(); 
    BufferedInputStream bis = new BufferedInputStream(is); 
    Metadata metadata = ImageMetadataReader.readMetadata(bis); 

    for (Directory directory : metadata.getDirectories()) { 
     for (Tag tag : directory.getTags()) { 
      //Toast.makeText(DetailsActivity.this, "" + tag.getTagName() +": " + tag.getDescription(), Toast.LENGTH_LONG).show(); 
      if (tag.getTagName().contains("ISO")) { 
       TextView text = (TextView) findViewById(R.id.textView); 
       text.setText("ISO: " + tag.getDescription()); 
      } 

      if (tag.getTagName().contains("Exposure")) { 
       Toast.makeText(DetailsActivity.this, "This is the Date: " + tag.getDescription(), Toast.LENGTH_LONG).show(); 
       //TextView text = (TextView) findViewById(R.id.textView1); 
       //text.setText("Exposure: " + tag.getDescription()); 
      } 
     } 
    } 
} catch (ImageProcessingException e) { 
} catch (IOException e) { 
} 

Antwort

0

Wenn Sie nur zwei Werte, iterieren nicht alle von ihnen. Ziehen Sie stattdessen das gewünschte Verzeichnis und dann das Tag direkt heraus.

Aus Ihrem Code sieht es so aus, als ob Sie ExifSubIfdDirectory benötigen.

ExifSubIFDDirectory subIfd = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class); 

if (subIfd != null) { 
    // NOTE these values could be null if they aren't present in the image's metadata 
    Integer iso = subIfd.getInteger(ExifSubIFDDirectory.TAG_ISO_EQUIVALENT); 
    Double exposureTime = subIfd.getDoubleObject(ExifSubIFDDirectory.TAG_EXPOSURE_TIME); 
} 
Verwandte Themen