Skip to content

Commit 1567ed3

Browse files
Fix #2133
1 parent bbe396e commit 1567ed3

File tree

4 files changed

+23
-0
lines changed

4 files changed

+23
-0
lines changed

src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,12 @@ private JpegColorSpace DeduceJpegColorSpace(byte componentCount)
530530
return JpegColorSpace.RGB;
531531
}
532532

533+
// If these values are 1-3 for a 3-channel image, then the image is assumed to be YCbCr.
534+
if (this.Components[2].Id == 3 && this.Components[1].Id == 2 && this.Components[0].Id == 1)
535+
{
536+
return JpegColorSpace.YCbCr;
537+
}
538+
533539
// 3-channel non-subsampled images are assumed to be RGB.
534540
if (this.Components[2].VerticalSamplingFactor == 1 && this.Components[1].VerticalSamplingFactor == 1 && this.Components[0].VerticalSamplingFactor == 1 &&
535541
this.Components[2].HorizontalSamplingFactor == 1 && this.Components[1].HorizontalSamplingFactor == 1 && this.Components[0].HorizontalSamplingFactor == 1)

tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,19 @@ public void Issue2057_DecodeWorks<TPixel>(TestImageProvider<TPixel> provider)
216216
}
217217
}
218218

219+
// https://github.com/SixLabors/ImageSharp/issues/2133
220+
[Theory]
221+
[WithFile(TestImages.Jpeg.Issues.Issue2133DeduceColorSpace, PixelTypes.Rgba32)]
222+
public void Issue2133_DeduceColorSpace<TPixel>(TestImageProvider<TPixel> provider)
223+
where TPixel : unmanaged, IPixel<TPixel>
224+
{
225+
using (Image<TPixel> image = provider.GetImage(JpegDecoder))
226+
{
227+
image.DebugSave(provider);
228+
image.CompareToOriginal(provider);
229+
}
230+
}
231+
219232
// DEBUG ONLY!
220233
// The PDF.js output should be saved by "tests\ImageSharp.Tests\Formats\Jpg\pdfjs\jpeg-converter.htm"
221234
// into "\tests\Images\ActualOutput\JpegDecoderTests\"

tests/ImageSharp.Tests/TestImages.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ public static class Issues
265265
public const string Issue2057App1Parsing = "Jpg/issues/Issue2057-App1Parsing.jpg";
266266
public const string ExifNullArrayTag = "Jpg/issues/issue-2056-exif-null-array.jpg";
267267
public const string ValidExifArgumentNullExceptionOnEncode = "Jpg/issues/Issue2087-exif-null-reference-on-encode.jpg";
268+
public const string Issue2133DeduceColorSpace = "Jpg/issues/Issue2133.jpg";
268269

269270
public static class Fuzz
270271
{
Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)