diff --git a/src/ImageSharp/Formats/Png/PngEncoderCore.cs b/src/ImageSharp/Formats/Png/PngEncoderCore.cs index a25f51fe16..5f7dd212fb 100644 --- a/src/ImageSharp/Formats/Png/PngEncoderCore.cs +++ b/src/ImageSharp/Formats/Png/PngEncoderCore.cs @@ -1081,6 +1081,10 @@ private void EncodeAdam7IndexedPixels(IndexedImageFrame quantize // encode data IManagedByteBuffer r = this.EncodeAdam7IndexedPixelRow(destSpan); deflateStream.Write(r.Array, 0, resultLength); + + IManagedByteBuffer temp = this.currentScanline; + this.currentScanline = this.previousScanline; + this.previousScanline = temp; } } } diff --git a/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs index 4f2490f9a6..93ea73eb46 100644 --- a/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs @@ -199,17 +199,20 @@ public void WorksWithAllBitDepths(TestImageProvider provider, Pn return; } - foreach (PngInterlaceMode interlaceMode in InterlaceMode) + foreach (var filterMethod in PngFilterMethods) { - TestPngEncoderCore( - provider, - pngColorType, - PngFilterMethod.Adaptive, - pngBitDepth, - interlaceMode, - appendPngColorType: true, - appendPixelType: true, - appendPngBitDepth: true); + foreach (PngInterlaceMode interlaceMode in InterlaceMode) + { + TestPngEncoderCore( + provider, + pngColorType, + (PngFilterMethod)filterMethod[0], + pngBitDepth, + interlaceMode, + appendPngColorType: true, + appendPixelType: true, + appendPngBitDepth: true); + } } } @@ -232,18 +235,21 @@ public void WorksWithAllBitDepths(TestImageProvider provider, Pn public void WorksWithAllBitDepthsAndExcludeAllFilter(TestImageProvider provider, PngColorType pngColorType, PngBitDepth pngBitDepth) where TPixel : unmanaged, IPixel { - foreach (PngInterlaceMode interlaceMode in InterlaceMode) + foreach (var filterMethod in PngFilterMethods) { - TestPngEncoderCore( - provider, - pngColorType, - PngFilterMethod.Adaptive, - pngBitDepth, - interlaceMode, - appendPngColorType: true, - appendPixelType: true, - appendPngBitDepth: true, - optimizeMethod: PngChunkFilter.ExcludeAll); + foreach (PngInterlaceMode interlaceMode in InterlaceMode) + { + TestPngEncoderCore( + provider, + pngColorType, + (PngFilterMethod)filterMethod[0], + pngBitDepth, + interlaceMode, + appendPngColorType: true, + appendPixelType: true, + appendPngBitDepth: true, + optimizeMethod: PngChunkFilter.ExcludeAll); + } } }