From e337c954847bf3a5ff17b64ec17c45916280fe31 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 28 Mar 2018 23:41:52 +0900 Subject: [PATCH 1/2] add jfxx signature when parsing jpeg --- .../apache/commons/imaging/formats/jpeg/JpegConstants.java | 7 +++++++ .../commons/imaging/formats/jpeg/segments/JfifSegment.java | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegConstants.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegConstants.java index eac5b62ce..43d7d4704 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegConstants.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegConstants.java @@ -40,6 +40,13 @@ public final class JpegConstants { 0x46, // F 0x20, // }); + public static final BinaryConstant JFXX0_EXTENSION_SIGNATURE = new BinaryConstant( + new byte[] { 0x4a, // J + 0x46, // F + 0x58, // X + 0x58, // X + 0x0, // + }); public static final BinaryConstant EXIF_IDENTIFIER_CODE = new BinaryConstant( new byte[] { 0x45, // E diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/JfifSegment.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/JfifSegment.java index 77105df3e..bd43ab04b 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/JfifSegment.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/JfifSegment.java @@ -52,7 +52,8 @@ public JfifSegment(final int marker, final int markerLength, final InputStream i final byte[] signature = readBytes(is, JpegConstants.JFIF0_SIGNATURE.size()); if (!JpegConstants.JFIF0_SIGNATURE.equals(signature) - && !JpegConstants.JFIF0_SIGNATURE_ALTERNATIVE.equals(signature)) { + && !JpegConstants.JFIF0_SIGNATURE_ALTERNATIVE.equals(signature) + && !JpegConstants.JFXX0_EXTENSION_SIGNATURE.equals(signature)) { throw new ImageReadException( "Not a Valid JPEG File: missing JFIF string"); } From 8ad11248834e21154a09fdeb9c130bd800ea8250 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 28 Mar 2018 23:44:45 +0900 Subject: [PATCH 2/2] Avoid jpeg parse fail due to exif --- .../commons/imaging/formats/jpeg/JpegImageParser.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java index d409f0255..e4e3eb006 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java @@ -312,7 +312,12 @@ public byte[] getICCProfileBytes(final ByteSource byteSource, final Map params) throws ImageReadException, IOException { - final TiffImageMetadata exif = getExifMetadata(byteSource, params); + TiffImageMetadata exif = null; + try { + exif = getExifMetadata(byteSource, params); + } catch (Exception e) { + // exif parse failed. + } final JpegPhotoshopMetadata photoshop = getPhotoshopMetadata(byteSource, params);