C# でのイメージの有効性のチェック
Image.FromFile() メソッドを使用してファイルからイメージを取得する場合、提供されたファイルが指定された画像形式と一致しない場合、潜在的な問題が発生します。たとえば、空のテキスト ファイルに「image.jpg」という名前を割り当てると、Image.FromFile() の読み込み中に OutOfMemory 例外がトリガーされる可能性があります。この問題に対処するには、指定されたストリームまたはファイル パスに基づいて画像を検証するメカニズムが必要です。
ストリーム検証:
関数 IsValidImage( Stream imageStream) は、ストリームを使用して画像を検証します。これを実現するには:
ファイル パス検証:
ストリーム検証と同様に、IsValidImage(string fileName) はファイル パスを使用して実装できます。このアプローチは、ストリームではなくファイルからバイトを直接読み取ることを除いて、ストリーム検証に似ています。
カスタム イメージ フォーマット検出:
高度なシナリオの場合、ファイル拡張子が信頼できない場合は、カスタムの画像形式検出メカニズムを実装できます。そのようなアプローチの 1 つは、画像のバイトを調べることです:
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() 中の潜在的な例外を軽減できます。読み込み中です。
以上がOutOfMemoryExceptions を防ぐために、イメージ ファイルを読み込む前に C# でイメージ ファイルを検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。