首頁 >後端開發 >C++ >如何在載入 C# 映像檔之前驗證它們以防止 OutOfMemoryExceptions?

如何在載入 C# 映像檔之前驗證它們以防止 OutOfMemoryExceptions?

Linda Hamilton
Linda Hamilton原創
2024-12-29 14:44:13839瀏覽

How Can I Validate Image Files in C# Before Loading Them to Prevent OutOfMemoryExceptions?

在C# 中檢查影像有效性

使用Image.FromFile() 方法從檔案擷取影像時,當提供的檔案與指定的影像格式不符時,就會出現潛在的問題。例如,指定名稱為「image.jpg」的空白文字檔案可能會在 Image.FromFile() 載入期間觸發 OutOfMemory 例外。為了解決這個問題,需要一種機制來根據給定的流或檔案路徑驗證映像。

流驗證:

函數 IsValidImage( Stream imageStream) 使用流驗證映像。要實現此目的:

  • 從流中讀取前幾個字節以確定影像格式。
  • 將擷取的位元組與常用的影像標頭簽章(例如 BMP、GIF、 PNG、TIFF、JPG)。

檔案路徑驗證:

與串流驗證類似,IsValidImage(string fileName) 可以使用檔案路徑實作。此方法類似於流驗證,不同之處在於直接從檔案而不是流讀取位元組。

自訂影像格式偵測:

對於進階場景,其中檔案副檔名不可靠,可以實現自訂影像格式偵測機制。其中一種方法涉及檢查影像的位元組:

public enum ImageFormat
{
    bmp,
    jpeg,
    gif,
    tiff,
    png,
    unknown
}

public static ImageFormat GetImageFormat(byte[] bytes)
{
    // Check bytes against image header signatures
    // ...

    return ImageFormat;
}

透過使用此函數,可以在影像完全載入到記憶體之前進行驗證,從而減輕Image.FromFile() 期間潛在的異常正在載入。

以上是如何在載入 C# 映像檔之前驗證它們以防止 OutOfMemoryExceptions?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn