打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#如何释放已经加载的图片

C#如何释放已经加载的图片,图片如果加载了不释放不解除占用会导致图片无法修改,包括改名和覆盖都不行。

使用Image.FromFile取磁盘上的图片时,这个方法会锁定图片文件,而且会导致内存占用增大, 有几种方法解决:

一:将Image类转换成Bitmap类

System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);

System.Drawing.Image bmp = new System.Drawing.Bitmap(img);

img.Dispose();

然后使用 bmp作为PictureBox的图片源

二:从流中读取

FileStream fileStream = new FileStream("文件名", FileMode.Open, FileAccess.Read);

pictureBox1.Image = Image.FromStream(fileStream);

fileStream.Close();

fileStream.Dispose(); 

原因:一个图像对象从一个文件构造时该文件仍保留锁定对象的生存期。所以关键是要使用 Graphics.DrawImage()方法或Drawing.Bitmap()方法来将映像复制到新位图Bitmap对象,然后Bitmap和Graphics就可以释放了。或者用使用FileStream的方式将文件读成流。

其中DataGridView中添加的图片

DataGridViewImageCell tupian = new DataGridViewImageCell();tupian.ImageLayout = DataGridViewImageCellLayout.Stretch;using(Image img =Image.FromFile(string.Format("{0}\\{1}", Application.StartupPath, dr["picpath"])) ){ //解除占用 Image im = new Bitmap(img); tupian.Value = im;} row.Cells.Add(tupian);

本来觉得用

this.studentPic.Image.Dispose();

this.studentPic.Image = null;

就可以了,但是根本就没法实现,SUOYIYA DUOSHIJIAN!!!!!!!!!!!

----------------------------------------------------------
如果觉得有用,麻烦点击 在看,让更多志同道合的伙伴加入我们的交流群,一起共同进步!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用X...
C# 加载图片image
pictureEdit 实现图片的自适应大小
对话框加载背景
as3加载外部图片的方法详解
网站性能优化:动态缩略图技术实现思路
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服