1
我編寫了一些代碼來使用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);
}
代碼隨機拋出異常內存在System.Drawning.Image在ImageResizer.ImageBuilder通話之一。
我想知道如果我在AppConfig文件中丟失了某些東西。
<configSections>
<section name="resizer" type="ImageResizer.ResizerSection,ImageResizer" requirePermission="false" />
</configSections>
<resizer>
<plugins>
<remove name="SizeLimiting" />
<add name="PdfRenderer" downloadNativeDependencies="false" />
</plugins>
</resizer>
任何想法這裏發生了什麼?
我改變了一下代碼,我將輸入圖像傳遞給ImageResizer構建調用,在處理隨機數量的圖像後總是發生錯誤。 – DaNet
嘗試每次迭代調用GC.Collect()和Thread.Sleep(10)。有可能你很快分割內存空間,分配開始失敗。 –
看來服務器使用的資源太多,重新啓動是我需要做的。我會添加你的建議,這應該不會再發生這種錯誤。 – DaNet