C# 上载图像和调整大小问题

C# 上载图像和调整大小问题,c#,asp.net,C#,Asp.net,我想上传一个图像,在保持其纵横比的同时调整其大小,然后将其保存到服务器。我更希望它使图像的宽度为200px。这样,图像将从左到右填充picturebox。我不确定如何做到这一点。现在我正在使用一个FileUpload控件。图像被上传到一个流中,进行转换,我希望它保存到文件系统中。我知道我做错了什么 string type = FileUpload1.PostedFile.ContentType; byte[] snap = new byte[FileUpload1.PostedFile.Con

我想上传一个图像,在保持其纵横比的同时调整其大小,然后将其保存到服务器。我更希望它使图像的宽度为200px。这样,图像将从左到右填充picturebox。我不确定如何做到这一点。现在我正在使用一个FileUpload控件。图像被上传到一个流中,进行转换,我希望它保存到文件系统中。我知道我做错了什么

string type = FileUpload1.PostedFile.ContentType;

byte[] snap = new byte[FileUpload1.PostedFile.ContentLength];

System.IO.Stream stream = FileUpload1.FileContent;

System.Drawing.Image imageLarge = System.Drawing.Image.FromStream(stream);
System.Drawing.Image imageLarge1 = ResizeImage(imageLarge, 200, 300);
MemoryStream memolarge = new MemoryStream();
imageLarge1.Save(memolarge, System.Drawing.Imaging.ImageFormat.Jpeg);
System.Drawing.Image returnImage = System.Drawing.Image.FromStream(memolarge);

您使用的cod是正确的。然而,它不考虑纵横比。 要计算纵横比,您需要做的是,计算图像的实际宽度和高度,并计算上传图像的比例


一旦你有了这个比率,你需要应用这个比率来调整图像的大小。

你需要通过保持纵横比来设置正确的高度

int newHeight = ActualImgHeight*200/ActualImgWidth;
Bitmap bmp = new Bitmap(200, newHeight);
Graphics g = Graphics.FromImage((Image)bmp);
g.InterpolationMode = InterpolationMode.HighQualityBilinear;
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawImage(imgToResize, 0, 0, 200, newHeight);
g.Dispose();
bmp.Save(path,System.Drawing.Imaging.ImageFormat.Jpeg);
希望这有帮助