From 323f24e8e556e4a866433fde46c57e8df3fea801 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 12 Jun 2022 13:32:33 +0200 Subject: [PATCH 1/2] Add test case for #2149 --- tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs | 6 ++++++ tests/ImageSharp.Tests/TestImages.cs | 1 + .../Input/Tiff/Issues/Group4CompressionWithStrips.tiff | 3 +++ 3 files changed, 10 insertions(+) create mode 100644 tests/Images/Input/Tiff/Issues/Group4CompressionWithStrips.tiff diff --git a/tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs index 7987d76a3f..90e97824e8 100644 --- a/tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs @@ -665,6 +665,12 @@ public void TiffDecoder_ThrowsException_WithTooManyDirectories(TestImage } }); + // https://github.com/SixLabors/ImageSharp/issues/2149 + [Theory] + [WithFile(Issues2149, PixelTypes.Rgba32)] + public void TiffDecoder_CanDecode_Fax4CompressedWithStrips(TestImageProvider provider) + where TPixel : unmanaged, IPixel => TestTiffDecoder(provider); + [Theory] [WithFileCollection(nameof(MultiframeTestImages), PixelTypes.Rgba32)] public void DecodeMultiframe(TestImageProvider provider) diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 9c8fdd8d05..26101a17ae 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -917,6 +917,7 @@ public static class Tiff public const string Issues1716Rgb161616BitLittleEndian = "Tiff/Issues/Issue1716.tiff"; public const string Issues1891 = "Tiff/Issues/Issue1891.tiff"; public const string Issues2123 = "Tiff/Issues/Issue2123.tiff"; + public const string Issues2149 = "Tiff/Issues/Group4CompressionWithStrips.tiff"; public const string SmallRgbDeflate = "Tiff/rgb_small_deflate.tiff"; public const string SmallRgbLzw = "Tiff/rgb_small_lzw.tiff"; diff --git a/tests/Images/Input/Tiff/Issues/Group4CompressionWithStrips.tiff b/tests/Images/Input/Tiff/Issues/Group4CompressionWithStrips.tiff new file mode 100644 index 0000000000..16d8030a4f --- /dev/null +++ b/tests/Images/Input/Tiff/Issues/Group4CompressionWithStrips.tiff @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:141320615d58b2971aedfeba8d408c38c0b4ab43024678254cecaebf0ed7edb0 +size 4440 From e84100a05e2b20ff1d77f406c6c10dbf6e5938c7 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 12 Jun 2022 13:34:08 +0200 Subject: [PATCH 2/2] Fix issue #2149 --- .../Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs index 7cfcfe12b6..8a94ead1e6 100644 --- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs +++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs @@ -52,6 +52,7 @@ public T6TiffCompression( protected override void Decompress(BufferedReadStream stream, int byteCount, int stripHeight, Span buffer) { int height = stripHeight; + buffer.Clear(); using System.Buffers.IMemoryOwner scanLineBuffer = this.Allocator.Allocate(this.width * 2); Span scanLine = scanLineBuffer.GetSpan().Slice(0, this.width);