diff --git a/addon/YaCy.app/Contents/Info.plist b/addon/YaCy.app/Contents/Info.plist
index cdfe28409..21f099847 100644
--- a/addon/YaCy.app/Contents/Info.plist
+++ b/addon/YaCy.app/Contents/Info.plist
@@ -83,7 +83,7 @@
$JAVAROOT/lib/lucene-queryparser-4.3.0.jar
$JAVAROOT/lib/lucene-spatial-4.3.0.jar
$JAVAROOT/lib/lucene-suggest-4.3.0.jar
- $JAVAROOT/lib/metadata-extractor-2.4.0-beta-1.jar
+ $JAVAROOT/lib/metadata-extractor-2.6.2.jar
$JAVAROOT/lib/mysql-connector-java-5.1.12-bin.jar
$JAVAROOT/lib/noggit-0.5.jar
$JAVAROOT/lib/pdfbox-1.8.1.jar
diff --git a/build.xml b/build.xml
index e32f26f05..c0e01449a 100644
--- a/build.xml
+++ b/build.xml
@@ -202,7 +202,7 @@
-
+
diff --git a/lib/metadata-extractor-2.4.0-beta-1.jar b/lib/metadata-extractor-2.4.0-beta-1.jar
deleted file mode 100644
index 3720d649d..000000000
Binary files a/lib/metadata-extractor-2.4.0-beta-1.jar and /dev/null differ
diff --git a/lib/metadata-extractor-2.6.2.License b/lib/metadata-extractor-2.6.2.License
new file mode 100644
index 000000000..4c7ccef0f
--- /dev/null
+++ b/lib/metadata-extractor-2.6.2.License
@@ -0,0 +1,35 @@
+Copyright 2002-2013 Drew Noakes
+
+
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+
+ you may not use this file except in compliance with the License.
+
+ You may obtain a copy of the License at
+
+
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+
+
+ Unless required by applicable law or agreed to in writing, software
+
+ distributed under the License is distributed on an "AS IS" BASIS,
+
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
+ See the License for the specific language governing permissions and
+
+ limitations under the License.
+
+
+
+More information about this project is available at:
+
+
+
+ http://drewnoakes.com/code/exif/
+
+ http://code.google.com/p/metadata-extractor/
diff --git a/lib/metadata-extractor-2.6.2.jar b/lib/metadata-extractor-2.6.2.jar
new file mode 100644
index 000000000..bd24cc1d5
Binary files /dev/null and b/lib/metadata-extractor-2.6.2.jar differ
diff --git a/source/net/yacy/document/parser/images/genericImageParser.java b/source/net/yacy/document/parser/images/genericImageParser.java
index 7203f75ae..19638ff4d 100644
--- a/source/net/yacy/document/parser/images/genericImageParser.java
+++ b/source/net/yacy/document/parser/images/genericImageParser.java
@@ -54,9 +54,9 @@ import net.yacy.kelondro.util.FileUtils;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.imaging.jpeg.JpegSegmentReader;
+import com.drew.lang.ByteArrayReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
-import com.drew.metadata.MetadataException;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifReader;
import com.drew.metadata.iptc.IptcReader;
@@ -128,31 +128,32 @@ public class genericImageParser extends AbstractParser implements Parser {
JpegSegmentReader segmentReader;
try {
- segmentReader = new JpegSegmentReader(new ByteArrayInputStream(b));
+ /**/
+ segmentReader = new JpegSegmentReader(b);
final byte[] exifSegment = segmentReader.readSegment(JpegSegmentReader.SEGMENT_APP1);
final byte[] iptcSegment = segmentReader.readSegment(JpegSegmentReader.SEGMENT_APPD);
final Metadata metadata = new Metadata();
- new ExifReader(exifSegment).extract(metadata);
- new IptcReader(iptcSegment).extract(metadata);
-
+ if (exifSegment != null) new ExifReader().extract(new ByteArrayReader(exifSegment),metadata);
+ if (iptcSegment != null) new IptcReader().extract(new ByteArrayReader(iptcSegment),metadata);
+ /**/
+ // alternative to above: to read all included jpeg tags and metadata
+ // final Metadata metadata = JpegMetadataReader.readMetadata(new ByteArrayInputStream(b));
+
@SuppressWarnings("unchecked")
- final
- Iterator directories = metadata.getDirectoryIterator();
+ final Iterator directories = metadata.getDirectories().iterator();
final HashMap props = new HashMap();
while (directories.hasNext()) {
final Directory directory = directories.next();
- @SuppressWarnings("unchecked")
- final
- Iterator tags = directory.getTagIterator();
+ @SuppressWarnings("unchecked")
+ final Iterator tags = directory.getTags().iterator();
while (tags.hasNext()) {
final Tag tag = tags.next();
- try {
+ // ! startswith "Unknown tag"
+ if (!tag.getTagName().startsWith("Unknown")) { // filter out returned TagName of "Unknown tag"
props.put(tag.getTagName(), tag.getDescription());
ii.info.append(tag.getTagName() + ": " + tag.getDescription() + " .\n");
- } catch (final MetadataException e) {
- //Log.logException(e);
- }
+ }
}
title = props.get("Image Description");
if (title == null || title.isEmpty()) title = props.get("Headline");