Скажите, является ли файл изображением с использованием .Net framework, не проверяя магические числа - PullRequest
2 голосов
/ 20 апреля 2011

Со всеми умениями фактической загрузки изображений, выполняемыми платформой .net, похоже, мне не нужно было повторять все это в моем коде, проверяя магические числа или используя хак, подобный этому:

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)?

1 Ответ

1 голос
/ 20 апреля 2011

Вам нужно будет открыть файл и прочитать соответствующие заголовки для типов файлов, которые вы хотите поддерживать, как упомянуто здесь:

определить, является ли файл изображением

Я не думаю, что в .NET Framework уже есть что-то, что может сделать это за вас, кроме как загрузить его в изображение и запросить формат изображения:

Поиск формата изображения с использованием растрового объекта в C #

Альтернативная теория (нет фактов, подтверждающих это): возможно, файл в Windows содержит метаданные, которые помечают его как изображение - так же, как диалоговое окно свойств, похоже, показывает информацию об исполнителе для аудиофайлов. Это может быть хорошим способом избежать открытия файла.

...