從檔案中讀取影像時,必須驗證它們以確保它們是合法的影像檔案。驗證失敗可能會導致異常或資料損壞。
考慮以下從檔案載入圖片的程式碼:
string filePath = "image.jpg"; Image newImage = Image.FromFile(filePath);
如果 image.jpg是無效圖片,將拋出 OutOfMemoryException。這是因為 Image.FromFile 方法嘗試在驗證之前將整個映像載入到記憶體中。
要解決此問題,可以使用驗證函數。下面是一個範例函數,用於驗證給定檔案路徑的圖像:
bool IsValidImage(string fileName) { try { using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { byte[] header = new byte[8]; fs.Read(header, 0, 8); if (header[0] == 255 && header[1] == 216 && header[2] == 255 && (header[3] == 224 || header[3] == 225)) return true; } } catch (Exception) { return false; } return false; }
此函數讀取檔案的前 8 個位元組並檢查標頭簽名。如果標頭與有效的 JPEG 影像簽章匹配,則函數傳回 true。否則,返回 false。
以下程式碼示範如何使用IsValidImage 函數:
if (IsValidImage("image.jpg")) { // Load the image if it's valid. Image newImage = Image.FromFile("image.jpg"); } else { // Handle invalid image here. }
透過驗證影像在載入它們之前,您可以防止影像異常並確保僅處理有效的圖像。本文提供的 IsValidImage 函數提供了一個簡單有效的影像驗證方法。
以上是如何在載入映像之前在 C# 中驗證映像以防止出現異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!