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

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

Mary-Kate Olsen
リリース: 2025-01-03 13:17:42
オリジナル
500 人が閲覧しました

How Can I Validate Images in C# Before Loading Them to Prevent Exceptions?

C でのイメージの検証

ファイルからイメージを読み取るときは、それらが正当なイメージ ファイルであることを確認するために検証することが不可欠です。検証に失敗すると、例外やデータの破損が発生する可能性があります。

問題のシナリオ

ファイルから画像をロードする次のコードを考えてみましょう:

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 サイトの他の関連記事を参照してください。

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