2016-11-07 20 views
0

Не удалось найти часть, чтобы распечатать весь массив метода getTagName(), поскольку он находится в форме тега, а не строки.Как просмотреть массив тегов exif через эту библиотеку экстракторов метаданных?

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

ответ

0

Если вам нужно только два значения, не перебирать все из них. Вместо этого вытащите конкретный каталог, который вы ищете, а затем тег напрямую.

С вашего кода, похоже, что вам нужно 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); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^