将图像调整为内存流大小会提供错误的FinalHeight和FinalWidth

时间:2018-11-20 12:48:04

标签: c# imageresizer

我正在尝试使用FitMode.Max参数调整图像大小,并且由于我将图像保存在数据库中,因此需要保存新的图像尺寸。

 public ImageResizeResponse Resize(Stream stream, int maxHeight = 1024, int maxWidth = 1024)
    {

        var response = new ImageResizeResponse();

        using (var ms = new MemoryStream())
        {

            var job = new ImageJob(stream, ms, new Instructions
            {
                Mode = FitMode.Max,
                Scale = ScaleMode.Both,
                JpegQuality = 80,
                OutputFormat = OutputFormat.Jpeg,
                Cache = ServerCacheMode.No,
                Height = maxHeight,
                Width = maxWidth
            });

            job.Build();

            response.FileContent = ms.ToArray();
            response.FinalHeight = job.FinalHeight.GetValueOrDefault();
            response.FinalWidth = job.FinalWidth.GetValueOrDefault();

            return response;

        }

    }

问题在于,当我调整小于1024x1024的图像的大小时,FinalHeight和FinalWidth为我提供了1024x1024的尺寸。

我希望参数为25x25,这是我原始图片的大小。我该怎么做?

1 个答案:

答案 0 :(得分:2)

事实证明,我已经使用ScaleMode.Both配置了指令,并且如果将它与设置FitMode.Max结合使用,它仍会将图像放大到配置的高度和宽度。