C# 将图像大小调整为内存流提供了错误的最终高度和最终宽度

C# 将图像大小调整为内存流提供了错误的最终高度和最终宽度,c#,imageresizer,C#,Imageresizer,我正在尝试使用FitMode.Max参数调整图像大小,并且我需要保存新的图像尺寸,因为我正在将图像保存到数据库中 public ImageResizeResponse Resize(Stream stream, int maxHeight = 1024, int maxWidth = 1024) { var response = new ImageResizeResponse(); using (var ms = new MemoryStream()

我正在尝试使用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的图像大小时,最终高度和最终宽度为我提供了1024x1024的尺寸


我希望参数是25x25,这是我的原始图像的大小。如何实现这一点?

事实证明,我已经使用ScaleMode配置了说明。两者都有,如果您将其与设置FitMode.Max结合使用,它仍然会将图像放大到配置的高度和宽度。

如何调用调整大小方法?可能您忽略了maxHeight/maxWidth参数,它们得到的是默认值1024x1024@dlxeon问题是FinalHeight和FinalWidth没有反映源图像的维度。源映像小于1024x1024。您允许使用ScaleMode放大映像。如果您通过的大小大于实际映像大小,则两者都将放大到1024*1024!发现您正在使用FitMode.Max。真奇怪。可能它与ScaleMode不兼容。Both@dlxeon不过你说得有道理。让我试着只使用缩尺。