2016-11-07 2 views
0

Impossible de localiser la pièce pour imprimer la totalité du tableau de la méthode getTagName() car elle est sous la forme d'une balise et non d'une chaîne.Comment afficher la matrice de tag exif à travers cette bibliothèque extracteur de métadonnées?

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) { 
} 

Répondre

0

Si vous avez seulement besoin de deux valeurs, ne pas itérer tous. Au lieu de cela, sortez le répertoire spécifique que vous recherchez, puis le tag directement.

De votre code, il semble que vous ayez besoin de ExifSubIfdDirectory.

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); 
}