diff --git a/src/ImageSharp/Formats/Jpeg/GolangPort/OrigJpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/GolangPort/OrigJpegDecoderCore.cs index 2d300a38f..d7224f3cf 100644 --- a/src/ImageSharp/Formats/Jpeg/GolangPort/OrigJpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/GolangPort/OrigJpegDecoderCore.cs @@ -53,9 +53,14 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort private bool isJFif; /// - /// Contains information about the JFIF marker + /// The horizontal resolution gleaned from a JFIF marker if present /// - private JFifMarker jFif; + private short jFifHorizontalResolution; + + /// + /// The vertical resolution gleaned from a JFIF marker if present + /// + private short jFifVerticalResolution; /// /// Whether the image has a EXIF header @@ -68,9 +73,9 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort private bool isAdobe; /// - /// Contains information about the Adobe marker + /// The Adobe color transform value for determining what color space the image uses. /// - private AdobeMarker adobe; + private byte adobeColorTransform; /// /// Initializes a new instance of the class. @@ -408,10 +413,10 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort this.MetaData.VerticalResolution = verticalValue; } } - else if (this.jFif.XDensity > 0 && this.jFif.YDensity > 0) + else if (this.jFifHorizontalResolution > 0 && this.jFifVerticalResolution > 0) { - this.MetaData.HorizontalResolution = this.jFif.XDensity; - this.MetaData.VerticalResolution = this.jFif.YDensity; + this.MetaData.HorizontalResolution = this.jFifHorizontalResolution; + this.MetaData.VerticalResolution = this.jFifVerticalResolution; } } @@ -438,14 +443,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort if (this.isJFif) { - this.jFif = new JFifMarker - { - MajorVersion = this.Temp[5], - MinorVersion = this.Temp[6], - DensityUnits = this.Temp[7], - XDensity = (short)((this.Temp[8] << 8) | this.Temp[9]), - YDensity = (short)((this.Temp[10] << 8) | this.Temp[11]) - }; + this.jFifHorizontalResolution = (short)((this.Temp[8] << 8) | this.Temp[9]); + this.jFifVerticalResolution = (short)((this.Temp[10] << 8) | this.Temp[11]); } if (remaining > 0) @@ -556,13 +555,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort if (this.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] - }; + this.adobeColorTransform = this.Temp[11]; } if (remaining > 0) @@ -784,19 +777,19 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.GolangPort case 1: return JpegColorSpace.GrayScale; case 3: - if (!this.isAdobe || this.adobe.ColorTransform == OrigJpegConstants.Adobe.ColorTransformYCbCr) + if (!this.isAdobe || this.adobeColorTransform == OrigJpegConstants.Adobe.ColorTransformYCbCr) { return JpegColorSpace.YCbCr; } - if (this.adobe.ColorTransform == OrigJpegConstants.Adobe.ColorTransformUnknown) + if (this.adobeColorTransform == OrigJpegConstants.Adobe.ColorTransformUnknown) { return JpegColorSpace.RGB; } break; case 4: - if (this.adobe.ColorTransform == OrigJpegConstants.Adobe.ColorTransformYcck) + if (this.adobeColorTransform == OrigJpegConstants.Adobe.ColorTransformYcck) { return JpegColorSpace.Ycck; }