使用.net框架判断文件是否是图像,而不是通过检查幻数



通过。net框架实际加载图像的所有智能,似乎我不应该在我的代码中通过检查幻数来重复这一切,或者使用像这样的hack:

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

您需要打开文件并读取您想要支持的文件类型的相关头,如这里所述:

判断文件是否为图像

我不认为在。net框架中已经有任何东西可以为你做到这一点,除了将它加载到图像中并查询图像格式:

在c#中使用Bitmap对象查找图像格式

另一种理论(没有实际的事实来支持这个理论):也许这个文件在Windows中保存了元数据,将其标记为图像——就像属性对话框显示音频文件的艺术家信息一样。这可能是一个可爱的方式来避免打开文件。

编辑由FastAl Jun 2020。更多有用链接:

使用。net,如何根据文件签名而不是扩展名

找到文件的mime类型?

不是我想要的,但这是神奇的#s:

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

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

相关内容

  • 没有找到相关文章

最新更新