Picturebox加载图片后在删除该图片时的报错问题的解决方法
2009-09-26 15:57
851 查看
当用Picturebox显示图片时是用的
Image.FromFile(ImageRul);这个方法来显示图片的,
如果这时想把图片给删除的话(File.Delete()),会报错,提示该图片正在使用中,
1,方法一,就是将该图片以流的方式加载进来,然后在赋给Picturebox,这样不存在删除的时候报错了。
调用的时候用:
Image.FromStream(ByteToStream(SetImageToByteArray(ImageUrl)));
下面是封装好的方法:
2,方法2:Picturebox.Load();
3, 方法3:
Image.FromFile(ImageRul);这个方法来显示图片的,
如果这时想把图片给删除的话(File.Delete()),会报错,提示该图片正在使用中,
1,方法一,就是将该图片以流的方式加载进来,然后在赋给Picturebox,这样不存在删除的时候报错了。
调用的时候用:
Image.FromStream(ByteToStream(SetImageToByteArray(ImageUrl)));
下面是封装好的方法:
#region 将文件转换成流 //public byte[] SetImageToByteArray(string fileName, ref string fileSize) /// <summary> /// 将文件转换成流 /// </summary> /// <param name="fileName">文件全路径</param> /// <returns></returns> public byte[] SetImageToByteArray(string fileName) { byte[] image = null; try { FileStream fs = new FileStream(fileName, FileMode.Open); FileInfo fileInfo = new FileInfo(fileName); //fileSize = Convert.ToDecimal(fileInfo.Length / 1024).ToString("f2") + " K"; int streamLength = (int)fs.Length; image = new byte[streamLength]; fs.Read(image, 0, streamLength); fs.Close(); return image; } catch { return image; } } #endregion #region 将byte转换成MemoryStream类型 /// <summary> /// 将byte转换成MemoryStream类型 /// </summary> /// <param name="mybyte">byte[]变量</param> /// <returns></returns> public MemoryStream ByteToStream(byte[] mybyte) { MemoryStream mymemorystream = new MemoryStream(mybyte, 0, mybyte.Length); return mymemorystream; } #endregion #region 将byte转换成Image文件 /// <summary> /// 将byte转换成Image文件 /// </summary> /// <param name="mybyte">byte[]变量</param> /// <returns></returns> public Image SetByteToImage(byte[] mybyte) { Image image; MemoryStream mymemorystream = new MemoryStream(mybyte, 0, mybyte.Length); image = Image.FromStream(mymemorystream); return image; } #endregion
2,方法2:Picturebox.Load();
3, 方法3:
01.//显示图片 02.private void button1_Click(object sender, EventArgs e) 03.{ 04. pictureBox1.Image = Image.FromFile(@"f:/demo.gif"); 05.} 06. 07.//不显示图片并释放资源 08.private void button2_Click(object sender, EventArgs e) 09.{ 10. Image image = pictureBox1.Image; 11. pictureBox1.Image = null; 12. image.Dispose();//释放后就能正常删除 13.}
相关文章推荐
- C# 中 PictureBox 加载图片后无法删除解决方法
- android中的特殊报错(图片问题)解决方法!
- Android ListView加载图片相关问题和解决方法
- VS开发WINCE 程序PictureBox加载图片时异常 问题的解决办法
- spring boot 本地图片不能加载(图片路径)的问题及解决方法
- universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
- android 加载大图片是出现java.lang.OutOtMemoryError问题解决方法
- Android加载图片内存溢出问题解决方法
- Android加载图片内存溢出问题解决方法
- 用户控件动态加载图片问题解决方法!
- universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
- 解决tmpl插件与图片自动轮播插件结合使用,无法加载mytv()方法问题
- Jquery修改image的src属性,图片不加载问题的解决方法
- ImageView中无法加载显示本地SDCard图片问题的解决方法
- FinalBitmap在部分手机上listview中加载图片时界面闪退重启应用的问题解决方法
- WebView加载富文本(解决富文本内部图片不能加载,一直闪屏问题)的方法
- IE 6 下无法加载图片的奇怪问题及其解决方法
- universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
- cocos2dx 加载cocostudio创建的exportjson文件 不同图片之间会有黑线问题解决方法
- 解决加载图片内存溢出问题的方法