0

我想上传一张图片并在保持其纵横比的同时调整其大小,然后将其保存到服务器。我希望它使图像的宽度为 200 像素。这样图像将从左到右填充图片框。我不确定如何做到这一点。现在我正在使用 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);
4

2 回答 2

0

您使用的鳕鱼是正确的。但是,它不考虑纵横比。

要计算宽高比,你需要做的是,计算图片的实际宽度和高度,并计算上传图片的比例。

获得该比率后,您需要应用该比率来调整图像大小。

于 2012-10-04T06:38:20.540 回答
0

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

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);

希望这可以帮助。

于 2012-10-04T08:43:27.413 回答