在C# 中檢查影像有效性
使用Image.FromFile() 方法從檔案擷取影像時,當提供的檔案與指定的影像格式不符時,就會出現潛在的問題。例如,指定名稱為「image.jpg」的空白文字檔案可能會在 Image.FromFile() 載入期間觸發 OutOfMemory 例外。為了解決這個問題,需要一種機制來根據給定的流或檔案路徑驗證映像。
流驗證:
函數 IsValidImage( Stream imageStream) 使用流驗證映像。要實現此目的:
檔案路徑驗證:
與串流驗證類似,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中文網其他相關文章!