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

本文介绍了在进行PNG图片压缩过程中遇到的内存不足问题及解决方法。通过分析图片在内存中的实际大小变化,指出了合理释放资源的重要性,并给出了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在做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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值