C# 在asp.net中调整.jpg图像的大小并存储为流

C# 在asp.net中调整.jpg图像的大小并存储为流,c#,image,C#,Image,我正在asp.net中调整图像的大小。我成功地调整了图像的大小。但是在将其转换为流时 .jpg图像不工作 这是我的密码 如果我将图像格式设置为jpeg,它将不起作用。因为在C#中,.jpg没有图像格式 public static System.Drawing.Image ScaleImage(System.Drawing.Image image, int maxWidth, int maxHeight) { var width=image.Width;

我正在asp.net中调整图像的大小。我成功地调整了图像的大小。但是在将其转换为流时 .jpg图像不工作

这是我的密码 如果我将图像格式设置为jpeg,它将不起作用。因为在C#中,.jpg没有图像格式

 public static System.Drawing.Image ScaleImage(System.Drawing.Image image, int maxWidth, int maxHeight)
    {
        var width=image.Width;
        var height=image.Height;

        var newWidth=0;
        var newHeight=0;
        var divisor=0;
        if (width > height) {
                    newWidth = maxWidth;
                    divisor = width / maxWidth;
                    if (divisor == 0)
                    {
                        divisor = 1;
                    }
                    newHeight = Convert.ToInt32(height /divisor);
                }
                else {
                    newHeight = maxHeight;
                    divisor = height / maxHeight;
                    if (divisor == 0)
                    {
                        divisor = 1;
                    }
                    newWidth = Convert.ToInt32(width / divisor);
                }


        var newImage = new Bitmap(newWidth, newHeight);

        Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, newHeight);
        return newImage;

    }

public static Stream ToStream(this System.Drawing.Image image, ImageFormat formaw)
    {
        var stream = new System.IO.MemoryStream();
        //stream.ReadTimeout = 100000;
        image.Save(stream, formaw);
        stream.Position = 0;
        //stream.ReadTimeout = 100000;
        return stream;
    }

您要查找的图像格式是。

各位,所有的
系统。如果在ASP.NET服务中使用,则必须显式处理绘图类这不是可选的。如果流量过大,服务器将崩溃。

现在,您的代码依赖GC来取消分配
图形
位图
实例。不幸的是,GC将这两个对象视为小的、低优先级的对象,并且不知道它们实际上占用了100+MB的RAM

以下是一些如何安全且质量更好地调整图像大小的示例:


它是麻省理工学院许可的,因此无需担心使用限制。

您没有显示对
ToStream
的调用,这会有所帮助,很可能您输入了错误的
图像格式。