Directory.GetAllImageFiles我该怎么办?

我想填充一个String数组,其中包含目录中的所有图像。 直到现在我使用以下内容来获取jpg格式的所有图像
Dim List() as string = Directory.GetFiles(Path, "*.jpg")
现在我想扩展它并获得所有图像格式。 我可以使用directory.GetFiles结合“
ImageFormat
枚举”吗?     
已邀请:
您好,您可以使用我在http://msdn.microsoft.com/en-us/library/wz42302f.aspx上找到的社区内容:
private static string[] GetFiles(string sourceFolder, string filters)
{
   return filters.Split('|').SelectMany(filter => System.IO.Directory.GetFiles(sourceFolder, filter)).ToArray();
}
使用延迟评估的替代方法(仅限.Net 4.0):
private static IEnumerable<string> GetFiles(string sourceFolder, string filters)
{
   return filters.Split('|').SelectMany(filter => System.IO.Directory.EnumerateFiles(sourceFolder, filter));
}
你可以像
GetFiles("dir", "*.jpg|*.gif|*.jpeg|*.bmp|*.png")
一样使用它。它本质上只是对每个过滤器的搜索,因此它不如它能够获得的效率高。 最终版本是(仅限.Net 4.0,但至少可以制作成2.0解决方案):
private static IEnumerable<string> GetImageFiles(string sourceFolder)
{
   return from file in System.IO.Directory.EnumerateFiles(sourceFolder)
          let extension = Path.GetExtension(file)
          where extension == ".jpg" || extension == ".gif" || extension == ".png"
          select file;
}
我相信最后一个是最快的,因为它只循环一次。但这取决于模式搜索在
Directory
中的实现方式以及操作系统的搜索方式。我还没有进行性能测试。     
这是2.0 .net解决方案。 我在C#中做了类似的事情。此解决方案使用文件夹作为要处理的图像的下拉点。在所有情况下,将每种类型的文件作为图像加载都不是正确的解决方案,但我想将每个文件验证为可加载图像。
    string[] files = Directory.GetFiles(folderPath);
    foreach(string file in files)
    {


        System.Drawing.Image img = null;

        try
        {
            img = System.Drawing.Image.FromFile(file);
        }
        catch
        {
            // do nothing
        }

        if (img != null)
        {
            // did something

            img.Dispose();
        }
    }
事实证明我忘了一件...... 在处理文件之前,我确实使用了一个函数来限制正在处理的文件:
private bool IsImage(FileInfo file)
{
    bool imageFile = false;
    if ((file.Extension.ToLower() ==".jpg")||
       (file.Extension.ToLower() ==".gif")||
       (file.Extension.ToLower() == ".bmp") ||
       (file.Extension.ToLower() ==".png"))
    {
        imageFile = true;
    }

    return imageFile;
}
    

要回复问题请先登录注册