From eb08150e6182fa930bbbd69f595f3f892f2ba4f9 Mon Sep 17 00:00:00 2001 From: Anton Firszov Date: Fri, 19 Apr 2019 21:42:39 +0200 Subject: [PATCH] ResizeTests.LargeImage --- .../Transforms/Resize/ResizeWorker.cs | 7 ++++--- .../Processors/Transforms/ResizeTests.cs | 17 ++++++++++++++++- tests/Images/External | 2 +- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs b/src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs index ce28a00ee..9282c2128 100644 --- a/src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs +++ b/src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs @@ -114,7 +114,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms // Ensure offsets are normalized for cropping and padding. ResizeKernel kernel = this.verticalKernelMap.GetKernel(y - this.targetOrigin.Y); - while (kernel.StartIndex + kernel.Length > this.currentWindow.Max) + if (kernel.StartIndex + kernel.Length > this.currentWindow.Max) { this.Slide(); } @@ -145,8 +145,9 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms private void Slide() { - int minY = this.currentWindow.Min + this.windowBandHeight; - int maxY = Math.Min(this.currentWindow.Max + this.windowBandHeight, this.sourceRectangle.Height); + int minY = this.currentWindow.Max - this.windowBandHeight; + int maxY = Math.Min(minY + this.workerHeight, this.sourceRectangle.Height); + this.currentWindow = new RowInterval(minY, maxY); this.CalculateFirstPassValues(this.currentWindow); } diff --git a/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs b/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs index 6d02b4b45..f4098aaf7 100644 --- a/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs +++ b/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs @@ -34,12 +34,27 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms public static readonly string[] SmokeTestResamplerNames = { - nameof(KnownResamplers.NearestNeighbor), nameof(KnownResamplers.Bicubic), nameof(KnownResamplers.Box), + nameof(KnownResamplers.NearestNeighbor), + nameof(KnownResamplers.Bicubic), + nameof(KnownResamplers.Box), nameof(KnownResamplers.Lanczos5), }; private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.07F); + [Theory] + [WithTestPatternImages(4000, 4000, PixelTypes.Rgba32)] + public void LargeImage(TestImageProvider provider) + where TPixel : struct, IPixel + { + if (!TestEnvironment.Is64BitProcess) + { + return; + } + + provider.RunValidatingProcessorTest(x => x.Resize(300, 300), appendPixelTypeToFileName: false); + } + [Theory] [WithBasicTestPatternImages(15, 12, PixelTypes.Rgba32, 2, 3, 1, 2)] [WithBasicTestPatternImages(2, 256, PixelTypes.Rgba32, 1, 1, 1, 8)] diff --git a/tests/Images/External b/tests/Images/External index 6db7ed95d..8693e2fd4 160000 --- a/tests/Images/External +++ b/tests/Images/External @@ -1 +1 @@ -Subproject commit 6db7ed95dd8a2de4caa6d885952b6689d026ad27 +Subproject commit 8693e2fd4577a9ac1a749da8db564095b5a05389