Frage

Ich möchte ein String-Array mit allen in einem Verzeichnis gefundenen Bildern füllen.

Bis jetzt verwende ich Folgendes, um alle Bilder im JPG-Format zu erhalten

Dim List() as string = Directory.GetFiles(Path, "*.jpg")

Jetzt möchte ich es erweitern und alle Bildformate erhalten.

Könnte ich das Verzeichnis.GetFiles in Kombination mit einem " verwenden?ImageFormat Aufzählung"?

War es hilfreich?

Lösung

Hallo, Sie können das verwenden, was ich als Community-Inhalt unter gefunden habe 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();
}

eine Alternative, die Lazy Evaluation verwendet (nur .Net 4.0):

private static IEnumerable<string> GetFiles(string sourceFolder, string filters)
{
   return filters.Split('|').SelectMany(filter => System.IO.Directory.EnumerateFiles(sourceFolder, filter));
}

Sie können es gerne verwenden GetFiles("dir", "*.jpg|*.gif|*.jpeg|*.bmp|*.png").Es handelt sich im Wesentlichen nur um eine Suche nach jedem Filter nicht so effizient wie es nur geht.

Eine endgültige Version ist (ist nur .Net 4.0, kann aber zumindest auf eine 2.0-Lösung umgestellt werden):

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;
}

Ich glaube, der letzte ist der schnellste, weil er nur einmal eine Schleife durchführt.Dies hängt jedoch davon ab, wie die Mustersuche implementiert wird Directory und wie das Betriebssystem sucht.Es ist ein Leistungstest erforderlich, den ich nicht durchgeführt habe.

Andere Tipps

Dies ist 2.0 .NET-Lösung.

Ich habe in C # etwas Ähnliches gemacht.Diese Lösung verwendete einen Ordner als Abwurfstelle für zu verarbeitende Bilder.Laden Jede Dateityp als Bild ist in allen Fällen nicht korrekt, aber ich wollte jede Datei als ladbares Bild bestätigen. generasacodicetagpre.

dreht sich heraus, ich habe ein Stück vergessen ... Bevor ich die Dateien bearbeite, habe ich eine Funktion verwendet, um Dateien zu begrenzen, die verarbeitet wurden: generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top