2

实际加载图像的所有智能都是由 .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)

4

1 回答 1

1

您需要打开文件并阅读您想要支持的文件类型的相关标题,如下所述:

确定文件是否为图像

我认为 .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

于 2011-04-20T14:45:24.157 回答