Heim >Backend-Entwicklung >C++ >Wie kann ich eine Bilddatei in C# vor dem vollständigen Lesen validieren?
Bild aus Datei in C# validieren
Das Laden von Bildern aus Dateien ist eine häufige Aufgabe in der Programmierung. Allerdings kann es eine Herausforderung sein, sicherzustellen, dass das geladene Bild gültig ist, insbesondere wenn es sich um unzuverlässige Quellen handelt. In diesem Artikel wird eine Lösung vorgestellt, um ein Bild zu validieren, bevor es vollständig aus einer Datei gelesen wird, um mögliche Fehler zu vermeiden.
Um ein Bild zu validieren, können wir seinen Header untersuchen, der Informationen über das Format und die Abmessungen des Bildes enthält. Verschiedene Bildformate haben unterschiedliche Header, und durch den Vergleich der Header-Bytes mit bekannten Mustern können wir den Bildtyp bestimmen.
Hier ist eine Beispielfunktion in C#, die ein Bild anhand eines Dateipfads oder Streams validiert:
public static bool IsValidImage(string fileName) { try { using (var fileStream = File.OpenRead(fileName)) { return IsValidImage(fileStream); } } catch (Exception ex) { // Handle exceptions here, e.g., FileNotFoundException return false; } } public static bool IsValidImage(Stream imageStream) { // Read the header bytes from the stream byte[] headerBytes = new byte[4]; imageStream.Position = 0; imageStream.Read(headerBytes, 0, headerBytes.Length); // Compare the header bytes to known patterns if (headerBytes.SequenceEqual(Encoding.ASCII.GetBytes("BM"))) { return true; // BMP } else if (headerBytes.SequenceEqual(Encoding.ASCII.GetBytes("GIF"))) { return true; // GIF } else if (headerBytes.SequenceEqual(new byte[] { 137, 80, 78, 71 })) { return true; // PNG } else if (headerBytes.SequenceEqual(new byte[] { 73, 73, 42 }) || headerBytes.SequenceEqual(new byte[] { 77, 77, 42 })) { return true; // TIFF } else if (headerBytes.SequenceEqual(new byte[] { 255, 216, 255, 224 }) || headerBytes.SequenceEqual(new byte[] { 255, 216, 255, 225 })) { return true; // JPEG } else { return false; // Unknown format } }
Dieser Code untersucht die Header-Bytes des Bildes und vergleicht sie mit bekannten Mustern, die mit verschiedenen Bildformaten verknüpft sind. Wenn der Header mit einem bekannten Muster übereinstimmt, gibt die Funktion „true“ zurück. Andernfalls wird false zurückgegeben.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Bilddatei in C# vor dem vollständigen Lesen validieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!