You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2023/05/02 17:40:47 UTC

[tika] branch TIKA-4025 created (now 5623c324f)

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

tallison pushed a change to branch TIKA-4025
in repository https://gitbox.apache.org/repos/asf/tika.git


      at 5623c324f TIKA-4025 -- extract Java's ImageReader's num images into the metadata.

This branch includes the following new commits:

     new 5623c324f TIKA-4025 -- extract Java's ImageReader's num images into the metadata.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[tika] 01/01: TIKA-4025 -- extract Java's ImageReader's num images into the metadata.

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 5623c324fc7e17e1be60a828d6ce059bba808a23
Author: tallison <ta...@apache.org>
AuthorDate: Tue May 2 13:40:30 2023 -0400

    TIKA-4025 -- extract Java's ImageReader's num images into the metadata.
---
 .../main/java/org/apache/tika/metadata/TikaCoreProperties.java   | 6 ++++++
 .../src/main/java/org/apache/tika/parser/image/ImageParser.java  | 9 ++++++++-
 .../test/java/org/apache/tika/parser/image/ImageParserTest.java  | 5 +++++
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/tika-core/src/main/java/org/apache/tika/metadata/TikaCoreProperties.java b/tika-core/src/main/java/org/apache/tika/metadata/TikaCoreProperties.java
index e49144354..7abe6377f 100644
--- a/tika-core/src/main/java/org/apache/tika/metadata/TikaCoreProperties.java
+++ b/tika-core/src/main/java/org/apache/tika/metadata/TikaCoreProperties.java
@@ -291,6 +291,12 @@ public interface TikaCoreProperties {
      */
     Property RATING = XMP.RATING;
 
+    /**
+     * This is the number of images (as in a multi-frame gif) returned by
+     * Java's {@link javax.imageio.ImageReader#getNumImages(boolean)}.  See
+     * the javadocs for known limitations.
+     */
+    Property NUM_IMAGES = Property.internalInteger("imagereader:NumImages");
 
     // Comment and rating properties
     /**
diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageParser.java
index 855a4a023..3a75b6d89 100644
--- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageParser.java
+++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageParser.java
@@ -171,7 +171,14 @@ public class ImageParser extends AbstractImageParser {
                     try (ImageInputStream imageStream = ImageIO
                             .createImageInputStream(new CloseShieldInputStream(stream))) {
                         reader.setInput(imageStream);
-
+                        try {
+                            int numImages = reader.getNumImages(true);
+                            if (numImages > -1) {
+                                metadata.set(TikaCoreProperties.NUM_IMAGES, numImages);
+                            }
+                        } catch (IllegalStateException e) {
+                            //ignore
+                        }
                         metadata.set(Metadata.IMAGE_WIDTH, Integer.toString(reader.getWidth(0)));
                         metadata.set(Metadata.IMAGE_LENGTH, Integer.toString(reader.getHeight(0)));
                         metadata.set("height", Integer.toString(reader.getHeight(0)));
diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/ImageParserTest.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/ImageParserTest.java
index 6bdc54d3b..085c7bd81 100644
--- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/ImageParserTest.java
+++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/ImageParserTest.java
@@ -55,6 +55,7 @@ public class ImageParserTest extends TikaTest {
         assertEquals("100", metadata.get(Metadata.IMAGE_WIDTH));
         assertEquals("75", metadata.get(Metadata.IMAGE_LENGTH));
         assertEquals("8 8 8", metadata.get(Metadata.BITS_PER_SAMPLE));
+        assertEquals(1, metadata.getInt(TikaCoreProperties.NUM_IMAGES));
     }
 
     @Test
@@ -98,6 +99,7 @@ public class ImageParserTest extends TikaTest {
                         "more contributor license agreements.  See the NOTICE file distributed " +
                         "with this work for additional information regarding copyright ownership.",
                 metadata.get(TikaCoreProperties.COMMENTS));
+        assertEquals(1, metadata.getInt(TikaCoreProperties.NUM_IMAGES));
     }
 
     @Test
@@ -149,6 +151,7 @@ public class ImageParserTest extends TikaTest {
                         "more contributor license agreements.  See the NOTICE file distributed " +
                         "with this work for additional information regarding copyright ownership.",
                 metadata.get(TikaCoreProperties.COMMENTS));
+        assertEquals(1, metadata.getInt(TikaCoreProperties.NUM_IMAGES));
     }
 
     @Test
@@ -199,6 +202,7 @@ public class ImageParserTest extends TikaTest {
         assertEquals("100", metadata.get(Metadata.IMAGE_WIDTH));
         assertEquals("75", metadata.get(Metadata.IMAGE_LENGTH));
         assertEquals("8 8 8", metadata.get(Metadata.BITS_PER_SAMPLE));
+        assertEquals(1, metadata.getInt(TikaCoreProperties.NUM_IMAGES));
     }
 
     @Test // TIKA-2232
@@ -211,6 +215,7 @@ public class ImageParserTest extends TikaTest {
         assertEquals("78", metadata.get("height"));
         assertEquals("328", metadata.get("width"));
         assertEquals("image/x-jbig2", metadata.get("Content-Type"));
+        assertEquals(1, metadata.getInt(TikaCoreProperties.NUM_IMAGES));
     }
 
     @Test