ファイルからイメージを読み取るときは、それらが正当なイメージ ファイルであることを確認するために検証することが不可欠です。検証に失敗すると、例外やデータの破損が発生する可能性があります。
ファイルから画像をロードする次のコードを考えてみましょう:
string filePath = "image.jpg"; Image newImage = Image.FromFile(filePath);
If 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 中国語 Web サイトの他の関連記事を参照してください。