diff --git a/ImageNodes/Images/Enums.cs b/ImageNodes/Images/Enums.cs index dc6c536e..eb17fe3e 100644 --- a/ImageNodes/Images/Enums.cs +++ b/ImageNodes/Images/Enums.cs @@ -5,5 +5,8 @@ public enum ResizeMode Fill = 1, Contain = 2, Cover = 3, - None = 4 + None = 4, + Min = 5, + Max = 6, + } \ No newline at end of file diff --git a/ImageNodes/Images/ImageResizer.cs b/ImageNodes/Images/ImageResizer.cs index 8e584b47..e8916dd0 100644 --- a/ImageNodes/Images/ImageResizer.cs +++ b/ImageNodes/Images/ImageResizer.cs @@ -33,10 +33,12 @@ public class ImageResizer: ImageNode { _ResizeModes = new List { - new ListOption { Value = Images.ResizeMode.Fill, Label = "Fill (Stretches to fit)"}, - new ListOption { Value = Images.ResizeMode.Contain, Label = "Contain (Preserves aspect ratio but contained in bounds)"}, - new ListOption { Value = Images.ResizeMode.Cover, Label = "Cover (Preserves aspect ratio)"}, - new ListOption { Value = Images.ResizeMode.None, Label = "None (Not resized)"} + new () { Value = ResizeMode.Fill, Label = "Fill (Stretches to fit)"}, + new () { Value = ResizeMode.Contain, Label = "Contain (Preserves aspect ratio but contained in bounds)"}, + new () { Value = ResizeMode.Cover, Label = "Cover (Preserves aspect ratio)"}, + new () { Value = ResizeMode.Min, Label = "Min (Resizes the image until the shortest side reaches the set given dimension)"}, + new () { Value = ResizeMode.Max, Label = "Max (Constrains the resized image to fit the bounds of its container maintaining the original aspect ratio)"}, + new () { Value = ResizeMode.None, Label = "None (Not resized)"} }; } return _ResizeModes; @@ -66,6 +68,10 @@ public class ImageResizer: ImageNode break; case ResizeMode.Fill: rzMode = SixLabors.ImageSharp.Processing.ResizeMode.Stretch; break; + case ResizeMode.Min: rzMode = SixLabors.ImageSharp.Processing.ResizeMode.Min; + break; + case ResizeMode.Max: rzMode = SixLabors.ImageSharp.Processing.ResizeMode.Max; + break; default: rzMode = SixLabors.ImageSharp.Processing.ResizeMode.BoxPad; break; } diff --git a/ImageNodes/Tests/ImageTests.cs b/ImageNodes/Tests/ImageTests.cs index d10f42f8..2923da91 100644 --- a/ImageNodes/Tests/ImageTests.cs +++ b/ImageNodes/Tests/ImageTests.cs @@ -3,6 +3,7 @@ using FileFlows.ImageNodes.Images; using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Runtime.InteropServices; +using Microsoft.VisualStudio.TestTools.UnitTesting.Logging; namespace FileFlows.ImageNodes.Tests; @@ -35,9 +36,9 @@ public class ImageNodesTests TestCropImage2 = "/home/john/Pictures/cropme.jpg"; TestCropImage3 = "/home/john/Pictures/crop.heic"; TestImageHeic = "/home/john/Pictures/crop.heic"; - TestImage1 = "/home/john/Pictures/fileflows.png"; + TestImage1 = "/home/john/Pictures/circle.jpg"; TestImage2 = "/home/john/Pictures/36410427.png"; - TempDir = "/home/john/src/temp/"; + TempDir = "/home/john/temp/"; } } @@ -86,16 +87,20 @@ public class ImageNodesTests [TestMethod] public void ImageNodes_Basic_Resize() { - var args = new NodeParameters(TestImage1, new TestLogger(), false, string.Empty) + var logger = new TestLogger(); + var args = new NodeParameters(TestImage1, logger, false, string.Empty) { TempPath = TempDir }; var node = new ImageResizer(); - node.Width = 1000; - node.Height = 500; - node.Mode = ResizeMode.Fill; - Assert.AreEqual(1, node.Execute(args)); + node.Width = 1920; + node.Height = 1080; + node.Format = string.Empty; + node.Mode = ResizeMode.Max; + var result = node.Execute(args); + var log = logger.ToString(); + Assert.AreEqual(1, result); } [TestMethod]