From 3687d7d7f4bc74f7696f1dc69951c69a0a548742 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Fri, 28 Jul 2023 20:56:38 +0200 Subject: [PATCH] Corrected checks for invalid density and added unit tests to make sure this stays fixed (#1419). --- .../IMagickImageExtentions.cs | 2 +- .../TheToBitmapWithDensityMethod.cs | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/Magick.NET.SystemDrawing/IMagickImageExtentions.cs b/src/Magick.NET.SystemDrawing/IMagickImageExtentions.cs index 3192f95766..58d795ac5b 100644 --- a/src/Magick.NET.SystemDrawing/IMagickImageExtentions.cs +++ b/src/Magick.NET.SystemDrawing/IMagickImageExtentions.cs @@ -159,7 +159,7 @@ private static void SetBitmapDensity(IMagickImage im private static Density GetDefaultDensity(IMagickImage image) { - if (image.Density.Units == DensityUnit.Undefined && image.Density.X == 0 && image.Density.Y == 0) + if (image.Density.X <= 0 || image.Density.Y <= 0) return new Density(96); return image.Density.ChangeUnits(DensityUnit.PixelsPerInch); diff --git a/tests/Magick.NET.SystemDrawing.Tests/IMagickImageExtensionsTests/TheToBitmapWithDensityMethod.cs b/tests/Magick.NET.SystemDrawing.Tests/IMagickImageExtensionsTests/TheToBitmapWithDensityMethod.cs index 9d31b551cb..3dcb25ea5b 100644 --- a/tests/Magick.NET.SystemDrawing.Tests/IMagickImageExtensionsTests/TheToBitmapWithDensityMethod.cs +++ b/tests/Magick.NET.SystemDrawing.Tests/IMagickImageExtensionsTests/TheToBitmapWithDensityMethod.cs @@ -133,6 +133,39 @@ public void ShouldSetTheDensityOfTheBitmapWhenFormatIsUsed() Assert.Equal(200, (int)bitmap.VerticalResolution); } + [Fact] + public void ShouldUseTheDensityWhenUnitsAreUndefined() + { + using var image = new MagickImage(MagickColors.Red, 1, 1); + image.Density = new Density(1, 1, DensityUnit.Undefined); + + using var bitmap = image.ToBitmapWithDensity(ImageFormat.Jpeg); + Assert.Equal(1, bitmap.HorizontalResolution); + Assert.Equal(1, bitmap.VerticalResolution); + } + + [Fact] + public void ShouldUseTheDefaultDensityWhenXIsZero() + { + using var image = new MagickImage(MagickColors.Red, 1, 1); + image.Density = new Density(0, 1, DensityUnit.PixelsPerCentimeter); + + using var bitmap = image.ToBitmapWithDensity(ImageFormat.Jpeg); + Assert.Equal(96, bitmap.HorizontalResolution); + Assert.Equal(96, bitmap.VerticalResolution); + } + + [Fact] + public void ShouldUseTheDefaultDensityWhenYIsZero() + { + using var image = new MagickImage(MagickColors.Red, 1, 1); + image.Density = new Density(1, 0, DensityUnit.PixelsPerCentimeter); + + using var bitmap = image.ToBitmapWithDensity(ImageFormat.Jpeg); + Assert.Equal(96, bitmap.HorizontalResolution); + Assert.Equal(96, bitmap.VerticalResolution); + } + private static void AssertUnsupportedImageFormat(ImageFormat imageFormat) { using var image = new MagickImage(MagickColors.Red, 10, 10);