C# 将图像大小调整为内存流提供了错误的最终高度和最终宽度
我正在尝试使用FitMode.Max参数调整图像大小,并且我需要保存新的图像尺寸,因为我正在将图像保存到数据库中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()
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不过你说得有道理。让我试着只使用缩尺。