C# 图片资源无法释放问题

最近在用C#做图片编辑功能时候,遇到一个很奇怪的问题。

由于需要对电脑本地图片修改后进行保存,所以采用最简单的方法,就是把图片加载到PictureBox,编辑之后调用Image类的Save方法直接覆盖原文件保存。这种方法在XP系统及管理权限用户登录的Win7系统上都正常,后来在普通权限用户登录的Win7系统上出现“A generic error occurred in GDI+”的错误。经过跟踪调试,确定是在Image类的Save方法进行覆盖式保存时出错。后来换了一种折衷的实现方法,就是在覆盖保存时,先把原文件删除,然后把Image中的图像按原路径保存。这方法不会出现前面的GDI+错误,但在删除原文件时却出现“The process cannot access the file 'x:\xx.jpg' because it is being used by another process.”。相关代码如下:

 Image Src_Pic = Image.FromFile(fileName);
 bgBMP = new Bitmap((Image)Src_Pic.Clone());
 Src_Pic.Dispose();
在这里已经把原文件的Image对象Src_Pic释放掉,只是把其数据填充到Bitmap对象中,按道理应该不会出现在删除对应文件时出现资源无法访问的问题。估计调用的Clone方法还是关联到原文件路径。(我是C#新手,研究还不够深,只能暂时猜测哈)

后来再找了个折衷方法,手动实现"Clone"。部分代码如下

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值