控制台应用程序中的ImageResizer内存不足错误

时间:2015-06-16 21:37:43

标签: imageresizer

我写了一些代码来使用ImageResizer调整大量图像的大小。

foreach(DataRow item in dst.Tables[0].Rows)
{
     string dir = @"C:\Media\ImageCollection\" + item[image];

     string outputDir = @"D:\ImageExport\" + item[filename].ToString().SubString(0, 5);

     if (!Directory.Exists(outputDir))
          Directory.CreateDirectory(outputDir);

     if (Convert.ToInt32(item["width"]) > Convert.ToInt32(item["height"]))
          ImageResizer.ImageBuilder.Current.Build(dir, outputDir + @"\" + item["image"] + ".jpg", new ImageResizer.ResizeSettings("?maxwidth=500&format=jpg&quality=96"), true);
     else
          ImageResizer.ImageBuilder.Current.Build(dir, outputDir + @"\" + item["image"] + ".jpg", new ImageResizer.ResizeSettings("?maxheight=500&format=jpg&quality=96"), true);
}

代码在ImageResizer.ImageBuilder调用之一上随机抛出System.Drawning.Image 中的异常 Out of Memory。

我想知道我是否遗漏了AppConfig文件中的内容。

<configSections>
     <section name="resizer" type="ImageResizer.ResizerSection,ImageResizer"  requirePermission="false"  />
</configSections>  

<resizer>
     <plugins>
          <remove name="SizeLimiting" />
          <add name="PdfRenderer" downloadNativeDependencies="false" />
     </plugins>
</resizer>

知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:1)

根据您发布的代码,您尝试使用目录路径(@&#34; C:\ Media \ ImageCollection&#34;)作为输入图像文件名。 ImageResizer一次只能处理1张图像;你需要提供输入图像文件名。

OutOfMemoryException是Microsoft API在出现问题时抛出的一般错误消息;它并不总是意味着没有可用的内存。