Maison >développement back-end >C++ >Comment puis-je valider un fichier image en C# avant la lecture complète ?
Valider l'image à partir d'un fichier en C#
Le chargement d'images à partir de fichiers est une tâche courante en programmation. Cependant, s’assurer que l’image chargée est valide peut s’avérer un défi, surtout lorsqu’il s’agit de sources peu fiables. Cet article présente une solution pour valider une image avant qu'elle ne soit entièrement lue à partir d'un fichier, évitant ainsi des erreurs potentielles.
Pour valider une image, nous pouvons examiner son en-tête, qui contient des informations sur le format et les dimensions de l'image. Différents formats d'image ont des en-têtes distincts, et en comparant les octets d'en-tête à des modèles connus, nous pouvons déterminer le type d'image.
Voici un exemple de fonction en C# qui valide une image en fonction d'un chemin de fichier ou d'un flux :
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 } }
Ce code examine les octets d'en-tête de l'image et les compare aux modèles connus associés à divers formats d'image. Si l'en-tête correspond à un modèle connu, la fonction renvoie vrai. Sinon, il renvoie false.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!