This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/main by this push:
     new fc83832d5 TIKA-4425 - extract gps timestamp (#2225)
fc83832d5 is described below

commit fc83832d5bccff6a555b72f033637cc825b4c2a8
Author: Tim Allison <[email protected]>
AuthorDate: Fri May 30 08:41:28 2025 -0400

    TIKA-4425 - extract gps timestamp (#2225)
---
 tika-core/src/main/java/org/apache/tika/metadata/Geographic.java     | 5 +++++
 .../java/org/apache/tika/parser/image/ImageMetadataExtractor.java    | 5 +++++
 .../src/test/java/org/apache/tika/parser/image/HeifParserTest.java   | 5 +++++
 .../src/test/java/org/apache/tika/parser/image/JpegParserTest.java   | 3 +++
 4 files changed, 18 insertions(+)

diff --git a/tika-core/src/main/java/org/apache/tika/metadata/Geographic.java 
b/tika-core/src/main/java/org/apache/tika/metadata/Geographic.java
index 3c4006f2e..f46d51189 100644
--- a/tika-core/src/main/java/org/apache/tika/metadata/Geographic.java
+++ b/tika-core/src/main/java/org/apache/tika/metadata/Geographic.java
@@ -42,4 +42,9 @@ public interface Geographic {
      */
     Property ALTITUDE = Property.internalReal("geo:alt");
 
+    /**
+     * This is the timestamp that derives from a gps record
+     */
+    Property TIMESTAMP = Property.internalDate("geo:timestamp");
+
 }
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageMetadataExtractor.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageMetadataExtractor.java
index 2ad97c1e6..cabf2345b 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageMetadataExtractor.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageMetadataExtractor.java
@@ -59,6 +59,7 @@ import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 
 import org.apache.tika.exception.TikaException;
+import org.apache.tika.metadata.Geographic;
 import org.apache.tika.metadata.IPTC;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.Property;
@@ -636,6 +637,10 @@ public class ImageMetadataExtractor {
                 metadata.set(TikaCoreProperties.LONGITUDE,
                         geoDecimalFormat.format(geoLocation.getLongitude()));
             }
+            Date gpsDate = ((GpsDirectory)directory).getGpsDate();
+            if (gpsDate != null) {
+                metadata.set(Geographic.TIMESTAMP, gpsDate);
+            }
         }
     }
 
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/HeifParserTest.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/HeifParserTest.java
index b8fa07f7b..6f023a441 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/HeifParserTest.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/HeifParserTest.java
@@ -25,6 +25,7 @@ import org.apache.commons.io.IOUtils;
 import org.junit.jupiter.api.Test;
 import org.xml.sax.helpers.DefaultHandler;
 
+import org.apache.tika.metadata.Geographic;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.AutoDetectParser;
 import org.apache.tika.parser.ParseContext;
@@ -51,6 +52,10 @@ public class HeifParserTest {
         assertEquals("512 pixels", metadata.get("Width"));
         assertEquals("512 pixels", metadata.get("Height"));
         assertEquals("image/heic", metadata.get(Metadata.CONTENT_TYPE));
+        assertEquals("23.177917", metadata.get(Metadata.LATITUDE));
+        assertEquals("113.394317", metadata.get(Metadata.LONGITUDE));
+
+        assertEquals("2018-02-05T07:11:43Z", 
metadata.get(Geographic.TIMESTAMP));
 
         IOUtils.closeQuietly(stream);
     }
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/JpegParserTest.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/JpegParserTest.java
index d6fbd60a3..9775b9464 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/JpegParserTest.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/JpegParserTest.java
@@ -29,6 +29,7 @@ import java.util.TimeZone;
 import org.junit.jupiter.api.Test;
 import org.xml.sax.helpers.DefaultHandler;
 
+import org.apache.tika.metadata.Geographic;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TIFF;
 import org.apache.tika.metadata.TikaCoreProperties;
@@ -148,6 +149,8 @@ public class JpegParserTest {
         // Geo tags should be there with 5dp, and not rounded
         assertEquals("51.575762", metadata.get(Metadata.LATITUDE));
         assertEquals("-1.567886", metadata.get(Metadata.LONGITUDE));
+
+        assertEquals("2012-02-20T16:44:22Z", 
metadata.get(Geographic.TIMESTAMP));
     }
 
     @Test

Reply via email to