C# “内存不足”错误解决方案

今天在做png压缩的时候,遇到了“内存不足”这个错误,是我在添加了Image创建之后发生的。

                FileStream files = new FileStream(filePaths[i], FileMode.Open);
                Image _img = Image.FromStream(files);
                Vector2 _size = GetCompressSize(_img, filePaths[i]);

因为我要用到指定路径下png的宽度和高度。

解决方案: 为什么会出现这种异常呢?这是因为图片一般是压缩格式,压缩比例一般为十几倍,但图片读到内存后就会解压,这样图片占用的内存就会比我们看到的大十几倍。例如下图我所遇到的情况一个2M多的图片,到内存中就变成了300多M。这个问题该怎么解决呢?首先我们可以检查一下自己的程序,看是否有对象用完后没有销毁,如下图的对象,如果有这样的对象用完后记得销毁,可以看一下对象有没有dispose()方法。

所以,上面的代码修改成这样就好了:

                FileStream files = new FileStream(filePaths[i], FileMode.Open);
                Image _img = Image.FromStream(files);
                files.Close();
                files.Dispose();
                Vector2 _size = GetCompressSize(_img, filePaths[i]);
                _img.Dispose();

你可能感兴趣的:(C#)