info: show xmp sections when using exifinterface fallback
This commit is contained in:
parent
dd1d56f73a
commit
569aef5f9f
1 changed files with 16 additions and 0 deletions
|
@ -70,6 +70,7 @@ import deckers.thibault.aves.metadata.metadataextractor.Helper.getSafeRational
|
||||||
import deckers.thibault.aves.metadata.metadataextractor.Helper.getSafeString
|
import deckers.thibault.aves.metadata.metadataextractor.Helper.getSafeString
|
||||||
import deckers.thibault.aves.metadata.metadataextractor.Helper.isPngTextDir
|
import deckers.thibault.aves.metadata.metadataextractor.Helper.isPngTextDir
|
||||||
import deckers.thibault.aves.metadata.metadataextractor.PngActlDirectory
|
import deckers.thibault.aves.metadata.metadataextractor.PngActlDirectory
|
||||||
|
import deckers.thibault.aves.metadata.metadataextractor.SafeXmpReader
|
||||||
import deckers.thibault.aves.metadata.metadataextractor.mpf.MpEntry
|
import deckers.thibault.aves.metadata.metadataextractor.mpf.MpEntry
|
||||||
import deckers.thibault.aves.metadata.metadataextractor.mpf.MpEntryDirectory
|
import deckers.thibault.aves.metadata.metadataextractor.mpf.MpEntryDirectory
|
||||||
import deckers.thibault.aves.metadata.xmp.GoogleXMP
|
import deckers.thibault.aves.metadata.xmp.GoogleXMP
|
||||||
|
@ -394,6 +395,21 @@ class MetadataFetchHandler(private val context: Context) : MethodCallHandler {
|
||||||
// do not overwrite XMP parsed by metadata-extractor
|
// do not overwrite XMP parsed by metadata-extractor
|
||||||
// with raw XMP found by ExifInterface
|
// with raw XMP found by ExifInterface
|
||||||
allTags.remove(Metadata.DIR_XMP)
|
allTags.remove(Metadata.DIR_XMP)
|
||||||
|
} else {
|
||||||
|
val xmpTags = allTags[Metadata.DIR_XMP]
|
||||||
|
if (xmpTags != null) {
|
||||||
|
val xmpRaw = xmpTags[ExifInterface.TAG_XMP]
|
||||||
|
if (xmpRaw != null) {
|
||||||
|
val metadata = com.drew.metadata.Metadata()
|
||||||
|
val xmpBytes = xmpRaw.toByteArray(Charsets.UTF_8)
|
||||||
|
SafeXmpReader().extract(xmpBytes, 0, xmpBytes.size, metadata, null)
|
||||||
|
metadata.getFirstDirectoryOfType(XmpDirectory::class.java)?.let { xmpDir ->
|
||||||
|
val dirMap = HashMap<String, String>()
|
||||||
|
processXmp(xmpDir.xmpMeta, dirMap, allowMultiple = true)
|
||||||
|
allTags[Metadata.DIR_XMP] = dirMap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
metadataMap.putAll(allTags.mapValues { it.value.toMutableMap() })
|
metadataMap.putAll(allTags.mapValues { it.value.toMutableMap() })
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue