這是我轉換圖像的代碼,所有功能/方法都正常工作。轉換圖像時出現內存不足異常
int height=0,width = 0;
ImageFormat i;
foreach (string pic in files)
{
Image temp = Image.FromFile(pic);
if (whatisformat() != null)
i = whatisformat();
else
i = GetImageFormat(temp);
if (sizeselected()!=-1)
{
height = sizeselected();
width = getwidth(height);
}
else
{
width = temp.Width;
height = temp.Height;
}
Formatresizesave(temp, i, height, width, destination,Path.GetFileName(pic));
progressBar1.Value++;
}
}
我一直在得到一個內存不足的例外,雖然我有大量的RAM /內存在我的電腦上。 我的固態硬盤和32GB內存已超過60 GB,但仍然遇到內存不足異常。什麼可能導致問題?在我做的測試中,我只轉換了小於6MB的圖片。 順便說一下,Files是一個包含文件夾中所有文件路徑的列表。 而目標是在別處聲明的全局變量。
你已經嘗試過在圖像上完成後調用'Dispose'?順便說一句,你可以得到'OutOfMemoryException'而不會接近實際的內存限制。 – BradleyDotNET
不,我沒有,我不熟悉Dispose方法..對不起,如果我是「Noob」。我如何調用方法,我應該在哪裏調用它? – Bodokh
這實際上很可能是一個無效的參數,而不是真正的OOM。 GDI +(它是System.Drawing的基礎)喜歡這樣做。例如,如果您的寬度/高度參數爲負值,如果目標/源矩形位於圖像之外,...所有這些都會導致OOM異常。 – CodesInChaos