[
https://issues.apache.org/jira/browse/TIKA-4937?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18124213#comment-18124213
]
Hudson commented on TIKA-4937:
------------------------------
SUCCESS: Integrated in Jenkins build Tika ยป tika-main-jdk17 #1699 (See
[https://ci-builds.apache.org/job/Tika/job/tika-main-jdk17/1699/])
TIKA-4937: parse ICO and CUR files for image dimensions (#3266) (github:
[https://github.com/apache/tika/commit/20d127626aad434f8b4b4c0a37a7bc6a5063f79a])
* (edit) docs/modules/ROOT/partials/supported-formats.adoc
* (add)
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/java/org/apache/tika/parser/image/ICOParserTest.java
* (add)
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ICOParser.java
* (edit)
tika-serialization/src/test/java/org/apache/tika/config/loader/InferenceLoaderTest.java
* (edit) CHANGES.txt
* (edit)
tika-metadata-schema/src/main/resources/org/apache/tika/metadata/metadata-key-fields.json
* (edit)
tika-parsers/tika-parsers-standard/tika-parsers-standard-integration-tests/src/test/java/org/apache/tika/mime/TestMimeTypes.java
* (add)
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/resources/test-documents/testICO_bmpOnly.ico
* (edit)
tika-parsers/tika-parsers-extended/tika-parser-scientific-package/src/test/resources/2.4.1-tesseract.txt
* (add)
tika-parsers/tika-parsers-standard/tika-parsers-standard-integration-tests/src/test/resources/test-documents/testCUR.cur
* (add)
tika-parsers/tika-parsers-standard/tika-parsers-standard-integration-tests/src/test/resources/test-documents/testICO.ico
* (edit)
tika-parsers/tika-parsers-extended/tika-parser-scientific-package/src/test/resources/2.4.1-no-tesseract.txt
* (edit)
tika-serialization/src/main/java/org/apache/tika/config/loader/InferenceLoader.java
* (edit) docs/modules/ROOT/pages/formats.adoc
* (add)
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/resources/test-documents/testCUR.cur
* (edit)
tika-metadata-schema/src/main/resources/org/apache/tika/metadata/metadata-keys.json
* (add)
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/test/resources/test-documents/testICO.ico
* (add) tika-core/src/main/java/org/apache/tika/metadata/Icon.java
* (edit)
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageParser.java
* (edit) tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
> Extract image dimensions and entry list from ICO/CUR files
> ----------------------------------------------------------
>
> Key: TIKA-4937
> URL: https://issues.apache.org/jira/browse/TIKA-4937
> Project: Tika
> Issue Type: New Feature
> Reporter: Dominik Schmidt
> Priority: Major
>
> h3. Background
> Tika detects {{image/vnd.microsoft.icon}} (alias {{image/x-icon}}) and
> {{ImageParser}} claims the type, but ImageIO has no ICO reader on the
> classpath, so a {{.ico}} yields nothing beyond the content type: no
> dimensions, no bit depth, no image count.
> Since TIKA-4936 every Windows EXE/DLL emits its icon groups as embedded
> {{.ico}} documents (the first one typed {{THUMBNAIL}}), so an index now sees
> plenty of .ico entries without width/height.
> h3. Proposal
> Read the ICONDIR/ICONDIRENTRY structure of {{.ico}} and {{.cur}} files
> directly (no decoding, no new dependency) and set:
> * {{tiff:ImageWidth}} / {{tiff:ImageLength}} and {{tiff:BitsPerSample}} of
> the largest image. Entries of 256 px are stored as 0 in the directory, and
> the directory's width/height/bpp fields are unreliable in general, so take
> the values from each image's header instead: the PNG IHDR for PNG-encoded
> entries, the BITMAPINFOHEADER for BMP-encoded ones (height there is doubled
> to include the AND mask).
> * the number of images
> * one multi-valued property listing each entry as {{WxH@bpp}} plus its
> encoding (bmp/png), in directory order
> * for cursors ({{.cur}}, type 2 in the header): the hotspot of the largest
> image
> No text content. Malformed files (directory beyond EOF, entry offsets outside
> the file, count 0, unknown encoding) must not throw: emit what can be read
> and record a warning.
> Implementation: a dedicated small parser in {{tika-parser-image-module}} for
> {{image/vnd.microsoft.icon}} and {{image/x-win-bitmap}}, replacing the
> {{image/x-icon}} entry in {{ImageParser}}'s supported types (which currently
> finds no reader).
> h3. Out of scope
> * Decoding or rendering the images (the thumbnail presets keep passing the
> .ico through as stored)
> * Animated cursors ({{.ani}}), {{RT_GROUP_CURSOR}} extraction from PE files
> h3. Acceptance criteria
> * {{tika -m}} on a .ico with 16/32 px BMP entries and a 256 px PNG entry
> reports 256x256, 32 bpp, 3 images and the per-entry list.
> * The embedded icons of TIKA-4936's fixtures show width/height in {{/rmeta}}
> output.
> * A .cur reports type cursor and the hotspot.
> * Truncated or corrupt .ico files yield a warning, not an exception.
> * Fixtures: {{testWindows-icons-app.ico}} / {{-doc.ico}} from TIKA-4936 plus
> one generated .cur.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)