如何在不保存的情况下使用asp.net C#重新调整图像大小

本文关键字:新调整 调整 图像 net 保存 情况下 asp | 更新日期: 2023-09-27 18:26:13

我使用此代码来重新调整图像大小,但我的问题是,我必须保存原始图片,然后重新调整大小!如何在不保存图片的情况下重新调整图片大小?我想先重新调整图片大小,然后保存。

 FileUpload1.SaveAs("saveOriginalFileFirstHere");
 string thumbpath = "where resized pic should be saved";
 MakeThumbnails.makethumb("saveOriginalFileFirstpath", thumbpath);

 public static void makethumb(string savedpath, string thumbpath)
 {
   int resizeToWidth = 200;
   int resizeToHeight = 200;
   Graphics graphic;
   //Image photo; // your uploaded image
   Image photo = new Bitmap(savedpath);
   //  Image photo = new  j
   Bitmap bmp = new Bitmap(resizeToWidth, resizeToHeight);
   graphic = Graphics.FromImage(bmp);
   graphic.InterpolationMode = InterpolationMode.Default;
   graphic.SmoothingMode = SmoothingMode.Default;
   graphic.PixelOffsetMode = PixelOffsetMode.Default;
   graphic.CompositingQuality = CompositingQuality.Default;
   graphic.DrawImage(photo, 0, 0, resizeToWidth, resizeToHeight);
   bmp.Save(thumbpath);
 }

如何在不保存的情况下使用asp.net C#重新调整图像大小

使用上传文件的InputStream属性:

我已经修改了你的代码:

EDIT:您确实应该处理IDisposable,如位图和流,以避免内存泄漏。我已经更新了我的代码,所以在处理完这些资源后,它会正确地处理这些资源

 string thumbpath = "where resized pic should be saved";
 MakeThumbnails.makethumb(FileUpload1.InputStream, thumbpath);

 public static void makethumb(Stream stream, string thumbpath)
 {
    int resizeToWidth = 200;
    int resizeToHeight = 200;
    using (stream)
    using (Image photo = new Bitmap(stream))
    using (Bitmap bmp = new Bitmap(resizeToWidth, resizeToHeight))
    using (Graphics graphic = Graphics.FromImage(bmp))
    {
        graphic.InterpolationMode = InterpolationMode.Default;
        graphic.SmoothingMode = SmoothingMode.Default;
        graphic.PixelOffsetMode = PixelOffsetMode.Default;
        graphic.CompositingQuality = CompositingQuality.Default;
        graphic.DrawImage(photo, 0, 0, resizeToWidth, resizeToHeight);
        bmp.Save(thumbpath);
    }
 }

这应该按照你想要的方式工作,如果没有,或者有什么不清楚的地方,请告诉我。