这是我转换图像的代码,所有功能/方法都可以正常工作。
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++;
}
}
虽然我的电脑上有足够的内存/内存,但我仍然会遇到内存异常。 我的SSD和32GB的RAM上有超过60 GB的空闲时间,我仍然遇到内存不足异常。可能导致什么问题?在我做过的测试中,我只转换了不到6MB的图片。 顺便说一下,Files是一个包含文件夹中所有文件路径的列表。 目的地是在其他地方宣布的全球变量。
答案 0 :(得分:4)
确保您正在构建x64,而不是x86。如果你为x86构建,你的进程将被限制为2GB的RAM,而你有32GB的物理RAM这一事实并不重要。您还应使用Dispose
块using
每张图片。
int height=0,width = 0;
ImageFormat i;
foreach (string pic in files)
{
using (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++;
}
}
}