From 1959bf6531963444897b2f5c6c3b73b8945e3f8b Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sat, 16 Jul 2022 14:19:23 +0200 Subject: [PATCH] Always use RgbJpegSpectralConverter for decompressed jpeg data --- .../Tiff/Compression/Decompressors/JpegTiffCompression.cs | 5 +++-- .../Compression/Decompressors/RgbJpegSpectralConverter.cs | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/JpegTiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/JpegTiffCompression.cs index 3b2c765b38..3c0ebbb6fd 100644 --- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/JpegTiffCompression.cs +++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/JpegTiffCompression.cs @@ -73,8 +73,9 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors case TiffPhotometricInterpretation.YCbCr: case TiffPhotometricInterpretation.Rgb: { - using SpectralConverter spectralConverter = this.photometricInterpretation == TiffPhotometricInterpretation.YCbCr ? - new RgbJpegSpectralConverter(this.configuration) : new SpectralConverter(this.configuration); + // The jpeg data should treated as RGB color space. If the PhotometricInterpretation is YCbCr, + // the conversion to RGB will be handled in the next step by the YCbCr color decoder. + using SpectralConverter spectralConverter = new RgbJpegSpectralConverter(this.configuration); var scanDecoder = new HuffmanScanDecoder(stream, spectralConverter, CancellationToken.None); jpegDecoder.LoadTables(this.jpegTables, scanDecoder); jpegDecoder.ParseStream(stream, spectralConverter, CancellationToken.None); diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/RgbJpegSpectralConverter.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/RgbJpegSpectralConverter.cs index a83518064d..fa7d0ffc9f 100644 --- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/RgbJpegSpectralConverter.cs +++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/RgbJpegSpectralConverter.cs @@ -8,8 +8,9 @@ using SixLabors.ImageSharp.PixelFormats; namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors { /// - /// Spectral converter for YCbCr TIFF's which use the JPEG compression. - /// The jpeg data should be always treated as RGB color space. + /// Spectral converter for TIFF's which use the JPEG compression. + /// The compressed jpeg data should be always treated as RGB color space. + /// If PhotometricInterpretation indicates the data is YCbCr, the color decoder will handle the conversion. /// /// The type of the pixel. internal sealed class RgbJpegSpectralConverter : SpectralConverter