c# - 使用 WebImage.Resize 时出现内存不足异常

标签 c# asp.net-mvc-3

我在 MVC3 中使用 WebImage 来调整图像的大小。基本上,这样做的目的是创建上传文件的缩略图。我将无法控制文件的原始大小,因此我需要创建文件的缩略图以加快“预览”站点的速度。

我有一些文件需要上传,大小约为 4Mb,这在上传时不是问题。我遇到的问题是创建缩略图。我先上传文件,一旦它保存在服务器上,我就会为缩略图创建一个新的 WebImage 对象。

// Save a thumbnail of the file
WebImage image = new WebImage(savedFileName);

// Resize the image
image.Resize(135, 150, true);

// Save the thumbnail
image.Save(FileName);   // <<--- Out of memory exception here

// Dispose of the image
image = null;

当我尝试保存文件时,出现内存不足异常。关于如何解决这个问题的任何想法?

最佳答案

由于 WebImage 中的错误,我不得不求助于以下代码:

// Save a thumbnail of the file
byte[] fileBytes = System.IO.File.ReadAllBytes(savedFileName);

System.Drawing.Image i;
using (MemoryStream ms = new MemoryStream())
{
    ms.Write(fileBytes, 0, fileBytes.Length);
    i = System.Drawing.Image.FromStream(ms);
}

// Create the thumbnail
System.Drawing.Image thumbnail = i.GetThumbnailImage(135, 150, () => false, IntPtr.Zero);

关于c# - 使用 WebImage.Resize 时出现内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5271585/

相关文章:

c# - Code First Entity Framework - 更改连接字符串

c# - 如何减少多个图像的内存使用?

asp.net-mvc - MVCScaffolding 入门

c# - 为什么 mvccontrib 的 AssertViewRendered().ForView ("Edit") 由于 View 名称是完整的 cshtml 路径而失败?

c# - 非静态方法需要一个目标

c# - 带小数点的文本框显示格式

c# - 从调用异步的 BackgroundWorker 中抛出异常。方法(网络请求)

c# - 在实体中正确创建导航类

asp.net-mvc-3 - 验证属性被触发两次

asp.net-mvc - 双引号之间的 Razor 代码