fixed metadata reading across multiple directories of same type (all metadata merge)
This commit is contained in:
parent
c3dc4801f6
commit
4fdcae3909
1 changed files with 5 additions and 2 deletions
|
@ -34,6 +34,7 @@ import com.drew.metadata.xmp.XmpDirectory;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
@ -147,9 +148,11 @@ public class MetadataHandler implements MethodChannel.MethodCallHandler {
|
||||||
Metadata metadata = ImageMetadataReader.readMetadata(is);
|
Metadata metadata = ImageMetadataReader.readMetadata(is);
|
||||||
for (Directory dir : metadata.getDirectories()) {
|
for (Directory dir : metadata.getDirectories()) {
|
||||||
if (dir.getTagCount() > 0) {
|
if (dir.getTagCount() > 0) {
|
||||||
Map<String, String> dirMap = new HashMap<>();
|
|
||||||
// directory name
|
// directory name
|
||||||
metadataMap.put(dir.getName(), dirMap);
|
String dirName = dir.getName();
|
||||||
|
Map<String, String> dirMap = Objects.requireNonNull(metadataMap.getOrDefault(dirName, new HashMap<>()));
|
||||||
|
metadataMap.put(dirName, dirMap);
|
||||||
|
|
||||||
// tags
|
// tags
|
||||||
for (Tag tag : dir.getTags()) {
|
for (Tag tag : dir.getTags()) {
|
||||||
dirMap.put(tag.getTagName(), tag.getDescription());
|
dirMap.put(tag.getTagName(), tag.getDescription());
|
||||||
|
|
Loading…
Reference in a new issue