转换图像时内存不足错误

本文关键字:错误 内存不足 图像 转换 | 更新日期: 2023-09-27 17:58:26

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

转换图像时内存不足错误

当您使用完实现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);
            }
        }