转换图像内存不足错误

时间:2016-07-25 08:07:52

标签: c#

我的图像转换程序有问题。我可以转换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);

                    }
                }

1 个答案:

答案 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);
            }

        }