通过。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