2

実際に画像をロードするすべての機能が.netFrameworkによって実行されているので、魔法数をチェックしたり、次のようなハックを使用したりして、コード内ですべてを繰り返す必要はないようです。

Private Function IsImage(FileName as String) As Boolean
    Try
        Using img As New Bitmap(FileName)
        End Using
    Catch ex as System.ArgumentException
        Return False
    End Try
    Return True
End Function

私は何か明白なものが欠けていSystem.Drawing.IsImage(stream)ますか?

4

1 に答える 1

1

ここで説明するように、ファイルを開いて、サポートするファイルタイプに関連するヘッダーを読み取る必要があります。

ファイルが画像かどうかを判断する

.NET Frameworkには、画像に読み込んで画像形式をクエリする以外に、これを実行できるものはまだないと思います。

C#でビットマップオブジェクトを使用して画像形式を検索する

別の理論(これを裏付ける実際の事実はありません):おそらく、Windowsのファイルは、画像としてフラグを立てるメタデータを保持しています-プロパティダイアログがオーディオファイルのアーティスト情報を表示するのと同じ方法です。これは、ファイルを開かないようにするためのかわいい方法かもしれません。

FastAlによる編集2020年6月。より便利なリンク:

.NETを使用して、拡張子ではなくファイル署名に基づいてファイルのmimeタイプを見つけるにはどうすればよいですか?

私が求めたものではありませんが、ここに魔法の#があります:

https://en.wikipedia.org/wiki/List_of_file_signatures

https://www.garykessler.net/library/file_sigs.html

于 2011-04-20T14:45:24.157 に答える