c# 从硬盘获取图片 之后如何释放

c# 从硬盘获取图片 之后如何释放,第1张

ImageFromFile  一旦使用后,对应的文件在一直调用其生成的Image对象被Disponse前都不会被解除锁定,这就造成了一个问题,就是在这个图形被解锁前无法对图像进行 *** 作(比如删除,修改等 *** 作)
在以前用的过程中曾用过下面三个方法解决问题
 
第一种方法,在要进行文件 *** 作前将Image对象销毁
PictureBox picbox;
if(picboxImage!=null)picboxImageDisponse();
第二种方法,就是在加载图像的时候用一种方法替代:
SystemDrawingImage img = SystemDrawingImageFromFile(filepath);
SystemDrawingImage bmp = new SystemDrawingBitmap(imgWidth, imgHeight,    SystemDrawingImagingPixelFormatFormat32bppArgb);
SystemDrawingGraphics g = SystemDrawingGraphicsFromImage(bmp);
gDrawImage(img, 0, 0);
gFlush();
gDispose();
imgDispose();
//下面开始使用bmp作为显示的Image对象
SystemDrawingImage img = SystemDrawingImageFromFile(filepath);
SystemDrawingImage bmp = new SystemDrawingBitmap(img);
imgDispose();
方法四:
fs = New SystemIOFileStream("C:\WINNT\Web\Wallpaper\Fly Awayjpg",
IOFileModeOpen, IOFileAccessRead)
PictureBox1Image = SystemDrawingImageFromStream(fs)
fsClose()
Image类的FromFile方法打开文件と后没有关闭,导致文件锁定,无法进行删除、移动等 *** 作。
该而使用FromStream方法,代码如下:
//读取文件流
FileStream fileStream = new FileStream(iconPath, FileModeOpen, FileAccessRead);
int byteLength = (int)fileStreamLength;
byte[] fileBytes = new byte[byteLength];
fileStreamRead(fileBytes, 0, byteLength);
//文件流关闭,文件解除锁定
fileStreamClose();
PictrueImage = ImageFromStream(new MemoryStream(fileBytes));
因为FromStream方法参数应用的流必须一直保持打开,故代码中有一个文件流向MemeoryStream流的转换,从而可以关闭文件流,保持MemoryStream流的打开状态。

以上就是关于c# 从硬盘获取图片 之后如何释放全部的内容,包括:c# 从硬盘获取图片 之后如何释放、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9302353.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存