我的图像转换程序有问题。我可以转换39张图片然后出现此错误:
抛出异常:System.Drawing.dll中的'System.OutOfMemoryException'
我不知道我的代码有什么问题。
错误:
string[] originalImage = Directory.GetFiles(textBox1.Text);
foreach (var filename in originalImage)
{
if (fileExtension.ToUpper() == ".JPG" || fileExtension.ToUpper() == ".PNG")
{
Bitmap bitmap = new Bitmap(filename); //error coming here
//DefaultCompressionJpeg(bitmap);
string fn = Path.GetFileNameWithoutExtension(filename);
VariousQuality(bitmap, fn, fileExtension, fileOriginalDate);
}
}
答案 0 :(得分:3)
完成使用该对象后,应该释放实现IDisposable的每个对象。以下是程序中的一些一次性对象;
Filestream ms,
Bitmap original,
EncoderParameter encoderParameter
当没有足够的内存来继续执行程序时,抛出OutOfMemoryException。处理上述物体应解决您的问题。
<强>更新强> 请尝试以下代码;
if (fileExtension.ToUpper() == ".JPG" || fileExtension.ToUpper() == ".PNG")
{
using (Bitmap bitmap = new Bitmap(filename)) // added using statement.
{
//DefaultCompressionJpeg(bitmap);
string fn = Path.GetFileNameWithoutExtension(filename);
//saadame lisaks ka extensioni, et saaksime lihtsamini faili ümber nimetada
VariousQuality(bitmap, fn, fileExtension, fileOriginalDate);
}
}