diff --git a/src/ImageProcessor/Processors/Resize.cs b/src/ImageProcessor/Processors/Resize.cs index f13ad84d8..e460e59f9 100644 --- a/src/ImageProcessor/Processors/Resize.cs +++ b/src/ImageProcessor/Processors/Resize.cs @@ -364,24 +364,26 @@ namespace ImageProcessor.Processors } } - // Constrain the image to fit the maximum possible height or width. - if (resizeMode == ResizeMode.Max) - { - if (sourceWidth > width || sourceHeight > height) - { - double ratio = Math.Abs(height / width); - double sourceRatio = Math.Abs(sourceHeight / sourceWidth); - - if (sourceRatio < ratio) - { - height = 0; - } - else - { - width = 0; - } - } - } + // Constrain the image to fit the maximum possible height or width. + if (resizeMode == ResizeMode.Max) + { + //If either is 0, we don't need to figure out orientation + if (width > 0 && height > 0) + { + //integers must be cast to doubles to get needed precision + double ratio = (double)height / width; + double sourceRatio = (double)sourceHeight / sourceWidth; + + if (sourceRatio < ratio) + { + height = 0; + } + else + { + width = 0; + } + } + } // If height or width is not passed we assume that the standard ratio is to be kept. if (height == 0) @@ -669,4 +671,4 @@ namespace ImageProcessor.Processors return floats; } } -} \ No newline at end of file +}