【问题标题】:Upload image and resize problems上传图片和调整大小问题
【发布时间】:2012-10-04 16:43:27
【问题描述】:

我想上传一张图片并在保持其纵横比的同时调整其大小,然后将其保存到服务器。我希望它使图像的宽度为 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);

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 2011-08-05
        • 2011-10-08
        • 2011-05-18
        • 2011-08-25
        • 2014-08-26
        • 2011-05-28
        相关资源
        最近更新 更多