做一个项目的时候,用到了图片的操作,当用Picturebox显示图片时是用的
Image.FromFile(ImageRul);这个方法来显示图片的,
如果这时想把图片给删除的话,会报错,提示该图片正在使用中,
后来找到一个方法,就是将该图片以流的方式加载进来,然后在赋给Picturebox,这样不存在删除的时候报错了。
调用的时候用:
Image.FromStream(ByteToStream(SetImageToByteArray(ImageUrl)));
下面是封装好的方法:

Code
#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