上传图片并调整问题大小

时间:2012-10-04 06:23:54

标签: c# asp.net

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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);

希望这会有所帮助。