以c#调整图像宽度,但不调整高度

以c#调整图像宽度,但不调整高度,c#,image,razor,C#,Image,Razor,如何在C#中调整图像的宽度,而不使用image.resize()调整高度 当我这样做时: image.Resize(width: 800, preserveAspectRatio: true,preventEnlarge:true); 这是完整的代码: var imagePath = ""; var newFileName = ""; var imageThumbPath = ""; WebImage image = null; image = WebImage.Get

如何在C#中调整图像的宽度,而不使用image.resize()调整高度

当我这样做时:

image.Resize(width: 800, preserveAspectRatio: true,preventEnlarge:true);
这是完整的代码:

var imagePath = "";
var newFileName = "";
var imageThumbPath = "";
WebImage image = null;            
image = WebImage.GetImageFromRequest();
if (image != null)
{
    newFileName = Path.GetFileName(image.FileName);
    imagePath = @"pages/"+newFileName;
    image.Resize(width:800, preserveAspectRatio:true, preventEnlarge:true);
    image.Save(@"~/images/" + imagePath);
    imageThumbPath = @"pages/thumbnail/"+newFileName;
    image.Resize(width: 150, height:150, preserveAspectRatio:true, preventEnlarge:true);
    image.Save(@"~/images/" + imageThumbPath);
}
我收到以下错误消息:

方法“Resize”不重载3个参数

适用于Winform的解决方案
使用此功能:

public static Image ScaleImage(Image image, int maxWidth)
{    
    var newImage = new Bitmap(newWidth, image.Height);
    Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, image.Height);
    return newImage;
}
用法:

Image resized_image = ScaleImage(image, 800);
这是垃圾,所以我偷看了一眼。他们使用的逻辑是查看传递给高度和宽度的值,并计算每个值的纵横比,将新值与当前值进行比较。无论哪个值(高度或宽度)具有更大的纵横比,都会从另一个值计算其值。以下是:

这将导致
hRatio
大于
wRatio
,然后将根据
width
计算
height

由于已将
prevent
设置为
true
,因此您只需将
image.Height
输入即可

image.Resize(800, image.Height, true, true);
当然,自己计算身高并不难:

int width = 800;
int height = (int)Math.Round(((width * 1.0) / image.Width) * image.Height);
image.Resize(width, height, false, true);

你能发更多的代码吗?我的意思是,你的
图像
对象的类型是什么,定义,你是如何得到的?听起来你不想保留纵横比。方法的名称是
ResizeImage
,不是吗?图像的类型是什么?我看不到任何
System.Drawing.Image.Resize()
method。问题似乎与此相关:是的,为什么高度这个东西如此愚蠢。您应该能够将null传递给它!哦,好吧。。到底是谁做的?
image.Resize(800, image.Height, true, true);
int width = 800;
int height = (int)Math.Round(((width * 1.0) / image.Width) * image.Height);
image.Resize(width, height, false, true);