找不到打印getTagName()方法的整个数组的部分,因为它是标记形式而不是字符串。
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) {
}
如果您只需要两个值,就不要遍历它们。相反,拉出您正在查找的特定目录,然后直接拉出标记。
从您的代码中,看起来您需要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);
}