wpf遍历文件夹获取所有图片路径后,怎么关闭图片流

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf遍历文件夹获取所有图片路径后,怎么关闭图片流相关的知识,希望对你有一定的参考价值。

我提取了路径后,要对图片进行例如删除,移动位置的操作,可是会显示图片已在进程中打开,必须关掉进程才能删除,这样比较麻烦,怎么关闭图片流?

在你的截图里面,files应该是fileinfo类型的,用完以后要dispose,或者用using结构,就不再占用了。 参考技术A 发下图片流声明的代码和错误提示的代码追问

我想加一个按钮,实现删除某一张图片的功能,但是会显示,图片正被进程使用,不能删除

WPF中 如何将图片文件夹下的image图片转化成二进制byte[] 文件

如图,我想在xaml.cs 文件中写个方法,把pic 文件夹下某个png 或者jpG图片转化成byte[]二进制文件,请问怎么写,最好要完整的代码,谢谢 !

参考技术A 试试这个:
将pic文件的所有图片的生成方式设为Resource,首先获取流,
StreamResourceInfo info = Application.GetResourceStream(new Uri("pic/xx.jpg",UriKind.Relative));
Stream stream=info.Stream;
然后将流读入字节数组中,

byte[] buffur = new byte[stream.Length];
stream.Read(buffur, 0, buffer.Length);
参考技术B private byte[] FileContent(string fileName)  
  
    FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);  
    try  
      
        byte[] buffur = new byte[fs.Length];  
        fs.Read(buffur, 0, (int)fs.Length);  
  
        return buffur;  
      
    catch (Exception ex)  
      
          return null;  
      
    finally  
      
        if (fs != null)  
          
  
            //关闭资源  
            fs.Close();  
          
      

记得带上IO命名空间

追问

你回答的i很专业,但是您这样的方法我也试过,只是没成功,遇到的问题是 filename的文件名该如何确定,比如我的pic文件夹有个xx.jpg文件,那有什么方法确定filename

追答

首先你先把文件下制定的图片路径提取出来。用System.IO.Directory.GetFiles()。

首先你先把文件下制定的图片路径提取出来。用System.IO.Directory.GetFiles()。

追问

用 DirectoryInfo 或者 directory 这种方法都找不到图片,因为项目编译过后pic/xx.jpg 这个文件是在用户的电脑上是找不到的,因为我没有把"pic/xx.jpg "放在Debug的根目录下面,而是包含在编译过后的exe文件里面的,不知道我解释的是否清楚,不知道能否用 pack://application:,,,/pic/xx.png 这种方法实现,谢谢!

本回答被提问者和网友采纳
参考技术C 楼上已经实现的你要的。
FileStream fs = new FileStream(imagepath, FileMode.Open);
byte[] byData = new byte[fs.Length];
fs.Read(byData, 0, byData.Length);
fs.Close();
return byData;

不知道你的追问是不知道File去遍历还是知道FileName 但是找不到完整路径。你要遍历文件夹就
DirectoryInfo info =new DirectoryInfo("../pic");
foreach(File file in info.GetFiles)

file.FullName 就是你要的File路径。
追问

用 DirectoryInfo 或者 directory 这种方法都找不到图片,因为项目编译过后pic/xx.jpg 这个文件是在用户的电脑上是找不到的,因为我没有把"pic/xx.jpg "放在Debug的根目录下面,而是包含在编译过后的exe文件里面的,不知道我解释的是否清楚,不知道能否用 pack://application:,,,/pic/xx.png 这种方法实现,谢谢!

追答

编译在项目中的就是加载到项目资源文件中去了,可以通过Resources获取

以上是关于wpf遍历文件夹获取所有图片路径后,怎么关闭图片流的主要内容,如果未能解决你的问题,请参考以下文章

web图片一般存在后端哪里

VB怎么获取路径里的图片名

WPF 如何上传图片到服务器,并在客户端获取显示图片?

用fileupload上传图片,怎么获取上传后图片的相对路径

android下怎么获取res资源文件夹的路径

Android获取数据库图片uri路径并用imageView显示