diff --git a/src/ImageSharp/Formats/Tiff/TiffDecoderOptionsParser.cs b/src/ImageSharp/Formats/Tiff/TiffDecoderOptionsParser.cs index 85cabdc494..f8fd87000f 100644 --- a/src/ImageSharp/Formats/Tiff/TiffDecoderOptionsParser.cs +++ b/src/ImageSharp/Formats/Tiff/TiffDecoderOptionsParser.cs @@ -478,8 +478,9 @@ internal static class TiffDecoderOptionsParser { options.CompressionType = TiffDecoderCompressionType.OldJpeg; - // Like libtiff: always assume PhotometricInterpretation to be YCbCr, if the compression is old jpeg. - options.PhotometricInterpretation = TiffPhotometricInterpretation.YCbCr; + // Note: Setting PhotometricInterpretation and color type to RGB here, since the jpeg decoder will handle the conversion of the pixel data. + options.PhotometricInterpretation = TiffPhotometricInterpretation.Rgb; + options.ColorType = TiffColorType.Rgb; if (!options.OldJpegCompressionStartOfImageMarker.HasValue) { diff --git a/tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs index e38ce3c95f..06a9627b96 100644 --- a/tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs @@ -666,6 +666,7 @@ public class TiffDecoderTests : TiffDecoderBaseTester [Theory] [WithFile(RgbOldJpegCompressed, PixelTypes.Rgba32)] + [WithFile(YCbCrOldJpegCompressed, PixelTypes.Rgba32)] public void TiffDecoder_CanDecode_OldJpegCompressed(TestImageProvider provider) where TPixel : unmanaged, IPixel => TestTiffDecoder(provider, useExactComparer: false); diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 53f60bff55..9d017d5062 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -796,6 +796,7 @@ public static class TestImages public const string RgbJpegCompressed = "Tiff/rgb_jpegcompression.tiff"; public const string RgbJpegCompressed2 = "Tiff/twain-rgb-jpeg-with-bogus-ycbcr-subsampling.tiff"; public const string RgbOldJpegCompressed = "Tiff/OldJpegCompression.tiff"; + public const string YCbCrOldJpegCompressed = "Tiff/YCbCrOldJpegCompressed.tiff"; public const string RgbWithStripsJpegCompressed = "Tiff/rgb_jpegcompressed_stripped.tiff"; public const string RgbJpegCompressedNoJpegTable = "Tiff/rgb_jpegcompressed_nojpegtable.tiff"; public const string RgbLzwPredictor = "Tiff/rgb_lzw_predictor.tiff"; diff --git a/tests/Images/Input/Tiff/YCbCrOldJpegCompressed.tiff b/tests/Images/Input/Tiff/YCbCrOldJpegCompressed.tiff new file mode 100644 index 0000000000..26eff36d58 --- /dev/null +++ b/tests/Images/Input/Tiff/YCbCrOldJpegCompressed.tiff @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6527e69a3cce3e6d425c35695319711ad36d939f934902faa47f6ee1f1c7e08 +size 10076700