From 30cf4ea7eb422902b4ea071955213abf85062aff Mon Sep 17 00:00:00 2001 From: JimBobSquarePants Date: Tue, 26 Sep 2017 13:14:06 +1000 Subject: [PATCH] Use AdobeMarker for parsing logic --- .../Formats/Jpeg/5116.DCT_Filter.pdf | Bin 0 -> 218450 bytes .../Jpeg/Common/Decoder/AdobeMarker.cs | 78 ++++++++++++++---- .../Jpeg/GolangPort/OrigJpegDecoderCore.cs | 31 +++---- .../Jpeg/PdfJsPort/PdfJsJpegDecoderCore.cs | 24 ++---- .../Formats/Jpg/AdobeMarkerTests.cs | 43 ++++++++++ 5 files changed, 125 insertions(+), 51 deletions(-) create mode 100644 src/ImageSharp/Formats/Jpeg/5116.DCT_Filter.pdf create mode 100644 tests/ImageSharp.Tests/Formats/Jpg/AdobeMarkerTests.cs diff --git a/src/ImageSharp/Formats/Jpeg/5116.DCT_Filter.pdf b/src/ImageSharp/Formats/Jpeg/5116.DCT_Filter.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3423fb315978c281521c14474b8b401b65dfec81 GIT binary patch literal 218450 zcmd442|QKZ7dNgHDoV*zhFh6Rxc9p5y%I9dL#9IHnrAXok_;IlGH1>_&qHL$m?1-C z2$3PBB6Eej=Unudp7Q&@&-?lOdp@}5+~pfC%Jm7R!wc%-$1 z=r9Zh<%B>XW}1dXmoGzz*dz^1bubnN4m#Qp7;q^Afx%#K;Dabc6#|Dskq{Io6ru(; zgur2F1P2uOCK*GT9cz7U0I;PrS_mKbnpPhw{E)kYP6u=C0 z{T~bo!G406Zrp>RP#in%aU$8b--Dw#cRb4uh3|52mv(S=`1bzT+2K3rvLgUqxADi0 zgaJYZ|NX-=I|{wC9Vh#ab_ggZV*9fQIQx!g5$wpF&mwk?1A&C?><@+5F%AS8c+uN< z=77R?(B*)`cHU!WNAGwRv6E*G4$hs=qBwRwi{9A|2?g|W8-IY#?Ysv^qjt1Iz;=uc z$+43^Boeu^KNRN7tM^okRX-gyrJ-SI9t5y%~K=0u>k%LN97?a*-;plaLS8w`rt zp$9N1dWSy4UVO`1A`+ucFLm+2nW(8UhfD`Pstc8vZ);0k60JIiVz0A&` z%b^Rv9s>9eiqY28L2Bw~qtOT?oLvXWsmspu_ZDh^l_9dU!dO^g?FE#Go?b{s7;A3; z1Ta<@V>3N~1zC)qjwQ%3Fg7fQGS*hcfC&We!8YzmV@%d=Yz#}r zT*s78%gVsa6tId|0|`FNc3oKoVrp${yy+KcDM1=iX4(K>!>nbgZrN-aaY{ik^F&A*Tk|N-|C5P(K+> zx$jCCR6l%>)1Z5$dqFb-F}`L3kaFH{S4(>^^yL6Ja_)K8GX#KxAT&z$y=NkSrvNrqYC zyo5xSvi>zY#`pzdh^zd%BPj(pyYt= z*Ml<8_#>a+{bl$@C0S**+rY3g-f=!cI@Wn+f#pbn(p)R=iEMEu1=@5+;nii**oe2S zH$AClR1S6GcYc#e)_HTbw8ZVqg|x?&ox=W())J9Q>5{GlbyK*8$9SED(sU-qvu
tE6!5rv&d$C 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

eFnl6)J!4SHdMlvil{}@$U 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 ArT_o{ literal 0 HcmV?d00001 diff --git a/src/ImageSharp/Formats/Jpeg/Common/Decoder/AdobeMarker.cs b/src/ImageSharp/Formats/Jpeg/Common/Decoder/AdobeMarker.cs index 84ceff7cc..0ec2297d7 100644 --- a/src/ImageSharp/Formats/Jpeg/Common/Decoder/AdobeMarker.cs +++ b/src/ImageSharp/Formats/Jpeg/Common/Decoder/AdobeMarker.cs @@ -7,33 +7,80 @@ using System; namespace SixLabors.ImageSharp.Formats.Jpeg.Common.Decoder { ///

- /// Provides information about the Adobe marker segment + /// Provides information about the Adobe marker segment. /// + /// See the included 5116.DCT.pdf file in the source for more information. internal struct AdobeMarker : IEquatable { /// - /// The DCT Encode Version + /// Gets the length of an adobe marker segment. /// - public short DCTEncodeVersion; + public const int Length = 12; /// - /// 0x0 : (none) + /// Initializes a new instance of the struct. + /// + /// The DCT encode version + /// The horizontal downsampling hint used for DCT encoding + /// The vertical downsampling hint used for DCT encoding + /// The color transform model used + private AdobeMarker(short dctEncodeVersion, short app14Flags0, short app14Flags1, byte colorTransform) + { + this.DCTEncodeVersion = dctEncodeVersion; + this.APP14Flags0 = app14Flags0; + this.APP14Flags1 = app14Flags1; + this.ColorTransform = colorTransform; + } + + /// + /// Gets the DCT Encode Version + /// + public short DCTEncodeVersion { get; } + + /// + /// Gets the horizontal downsampling hint used for DCT encoding + /// 0x0 : (none - Chop) /// Bit 15 : Encoded with Blend=1 downsampling /// - public short APP14Flags0; + public short APP14Flags0 { get; } /// - /// 0x0 : (none) + /// Gets the vertical downsampling hint used for DCT encoding + /// 0x0 : (none - Chop) + /// Bit 15 : Encoded with Blend=1 downsampling /// - public short APP14Flags1; + public short APP14Flags1 { get; } /// - /// Determines the colorspace transform + /// Gets the colorspace transform model used /// 00 : Unknown (RGB or CMYK) /// 01 : YCbCr /// 02 : YCCK /// - public byte ColorTransform; + public byte ColorTransform { get; } + + /// + /// Converts the specified byte array representation of an Adobe marker to its equivalent and + /// returns a value that indicates whether the conversion succeeded. + /// + /// The byte array containing metadata to parse + /// The marker to return. + public static bool TryParse(byte[] bytes, out AdobeMarker marker) + { + if (ProfileResolver.IsProfile(bytes, ProfileResolver.AdobeMarker)) + { + short dctEncodeVersion = (short)((bytes[5] << 8) | bytes[6]); + short app14Flags0 = (short)((bytes[7] << 8) | bytes[8]); + short app14Flags1 = (short)((bytes[9] << 8) | bytes[10]); + byte colorTransform = bytes[11]; + + marker = new AdobeMarker(dctEncodeVersion, app14Flags0, app14Flags1, colorTransform); + return true; + } + + marker = default(AdobeMarker); + return false; + } /// public bool Equals(AdobeMarker other) @@ -57,19 +104,14 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Common.Decoder /// public override int GetHashCode() - { - return GetHashCode(this); - } - - private static int GetHashCode(AdobeMarker marker) { return HashHelpers.Combine( - marker.DCTEncodeVersion.GetHashCode(), + this.DCTEncodeVersion.GetHashCode(), HashHelpers.Combine( - marker.APP14Flags0.GetHashCode(), + this.APP14Flags0.GetHashCode(), HashHelpers.Combine( - marker.APP14Flags1.GetHashCode(), - marker.ColorTransform.GetHashCode()))); + this.APP14Flags1.GetHashCode(), + this.ColorTransform.GetHashCode()))); } } } \ No newline at end of file diff --git a/src/ImageSharp/Formats/Jpeg/GolangPort/OrigJpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/GolangPort/OrigJpegDecoderCore.cs index d68a90155..fa890a2a5 100644 --- a/src/ImageSharp/Formats/Jpeg/GolangPort/OrigJpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/GolangPort/OrigJpegDecoderCore.cs @@ -67,14 +67,20 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort private bool isExif; /// - /// Whether the image has an Adobe marker + /// Whether the image has an Adobe marker. + /// It's faster to check this than to use the equality operator on the struct /// private bool isAdobe; /// - /// The Adobe color transform value for determining what color space the image uses. + /// Contains information about the Adobe marker /// - private byte adobeColorTransform; + private AdobeMarker adobe; + + /// + /// Contains information about the JFIF marker + /// + private JFifMarker jFif; /// /// Initializes a new instance of the class. @@ -515,21 +521,18 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort /// The remaining bytes in the segment block. private void ProcessApp14Marker(int remaining) { - if (remaining < 12) + const int MarkerLength = AdobeMarker.Length; + if (remaining < MarkerLength) { // Skip the application header length this.InputProcessor.Skip(remaining); return; } - this.InputProcessor.ReadFull(this.Temp, 0, 12); - remaining -= 12; + this.InputProcessor.ReadFull(this.Temp, 0, MarkerLength); + remaining -= MarkerLength; - if (ProfileResolver.IsProfile(this.Temp, ProfileResolver.AdobeMarker)) - { - this.isAdobe = true; - this.adobeColorTransform = this.Temp[11]; - } + this.isAdobe = AdobeMarker.TryParse(this.Temp, out this.adobe); if (remaining > 0) { @@ -750,19 +753,19 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort case 1: return JpegColorSpace.GrayScale; case 3: - if (!this.isAdobe || this.adobeColorTransform == OrigJpegConstants.Adobe.ColorTransformYCbCr) + if (!this.isAdobe || this.adobe.ColorTransform == OrigJpegConstants.Adobe.ColorTransformYCbCr) { return JpegColorSpace.YCbCr; } - if (this.adobeColorTransform == OrigJpegConstants.Adobe.ColorTransformUnknown) + if (this.adobe.ColorTransform == OrigJpegConstants.Adobe.ColorTransformUnknown) { return JpegColorSpace.RGB; } break; case 4: - if (this.adobeColorTransform == OrigJpegConstants.Adobe.ColorTransformYcck) + if (this.adobe.ColorTransform == OrigJpegConstants.Adobe.ColorTransformYcck) { return JpegColorSpace.Ycck; } diff --git a/src/ImageSharp/Formats/Jpeg/PdfJsPort/PdfJsJpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/PdfJsPort/PdfJsJpegDecoderCore.cs index 8ed1e3103..ad13098ba 100644 --- a/src/ImageSharp/Formats/Jpeg/PdfJsPort/PdfJsJpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/PdfJsPort/PdfJsJpegDecoderCore.cs @@ -525,32 +525,18 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort /// The remaining bytes in the segment block. private void ProcessApp14Marker(int remaining) { - if (remaining < 12) + const int MarkerLength = AdobeMarker.Length; + if (remaining < MarkerLength) { // Skip the application header length this.InputStream.Skip(remaining); return; } - this.InputStream.Read(this.temp, 0, 12); - remaining -= 12; + this.InputStream.Read(this.temp, 0, MarkerLength); + remaining -= MarkerLength; - bool isAdobe = this.temp[0] == PdfJsJpegConstants.Markers.Adobe.A && - this.temp[1] == PdfJsJpegConstants.Markers.Adobe.D && - this.temp[2] == PdfJsJpegConstants.Markers.Adobe.O && - this.temp[3] == PdfJsJpegConstants.Markers.Adobe.B && - this.temp[4] == PdfJsJpegConstants.Markers.Adobe.E; - - if (isAdobe) - { - this.adobe = new AdobeMarker - { - DCTEncodeVersion = (short)((this.temp[5] << 8) | this.temp[6]), - APP14Flags0 = (short)((this.temp[7] << 8) | this.temp[8]), - APP14Flags1 = (short)((this.temp[9] << 8) | this.temp[10]), - ColorTransform = this.temp[11] - }; - } + AdobeMarker.TryParse(this.temp, out this.adobe); if (remaining > 0) { diff --git a/tests/ImageSharp.Tests/Formats/Jpg/AdobeMarkerTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/AdobeMarkerTests.cs new file mode 100644 index 000000000..7d179b040 --- /dev/null +++ b/tests/ImageSharp.Tests/Formats/Jpg/AdobeMarkerTests.cs @@ -0,0 +1,43 @@ +// Copyright (c) Six Labors and contributors. +// Licensed under the Apache License, Version 2.0. + +namespace SixLabors.ImageSharp.Tests.Formats.Jpg +{ + using SixLabors.ImageSharp.Formats.Jpeg.Common.Decoder; + using SixLabors.ImageSharp.Formats.Jpeg.GolangPort; + + using Xunit; + + public class AdobeMarkerTests + { + // Taken from actual test image + private readonly byte[] bytes = { 0x41, 0x64, 0x6F, 0x62, 0x65, 0x0, 0x64, 0x0, 0x0, 0x0, 0x0, 0x2 }; + + [Fact] + public void MarkerLengthIsCorrect() + { + Assert.Equal(12, AdobeMarker.Length); + } + + [Fact] + public void MarkerReturnsCorrectParsedValue() + { + bool isAdobe = AdobeMarker.TryParse(this.bytes, out var marker); + + Assert.True(isAdobe); + Assert.Equal(100, marker.DCTEncodeVersion); + Assert.Equal(0, marker.APP14Flags0); + Assert.Equal(0, marker.APP14Flags1); + Assert.Equal(OrigJpegConstants.Adobe.ColorTransformYcck, marker.ColorTransform); + } + + [Fact] + public void MarkerIgnoresIncorrectValue() + { + bool isAdobe = AdobeMarker.TryParse(new byte[] { 0, 0, 0, 0 }, out var marker); + + Assert.False(isAdobe); + Assert.Equal(default(AdobeMarker), marker); + } + } +} \ No newline at end of file