C# 在asp.net中调整.jpg图像的大小并存储为流
我正在asp.net中调整图像的大小。我成功地调整了图像的大小。但是在将其转换为流时 .jpg图像不工作 这是我的密码 如果我将图像格式设置为jpeg,它将不起作用。因为在C#中,.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;
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
的调用,这会有所帮助,很可能您输入了错误的图像格式。