ホームページ > バックエンド開発 > C++ > OutOfMemoryExceptions を防ぐために、イメージ ファイルを読み込む前に C# でイメージ ファイルを検証するにはどうすればよいですか?

OutOfMemoryExceptions を防ぐために、イメージ ファイルを読み込む前に C# でイメージ ファイルを検証するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-29 14:44:13
オリジナル
828 人が閲覧しました

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) はファイル パスを使用して実装できます。このアプローチは、ストリームではなくファイルからバイトを直接読み取ることを除いて、ストリーム検証に似ています。

カスタム イメージ フォーマット検出:

高度なシナリオの場合、ファイル拡張子が信頼できない場合は、カスタムの画像形式検出メカニズムを実装できます。そのようなアプローチの 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート