在C#中,判断特定文件是否为图像的最佳方法是什么?
大多数图片格式在图像的前几个字节中指定文件类型.您可以读取几个字节并查找正确的标头.
文件扩展名在技术上不包含有关图像的任何重要数据.它只是帮助操作系统找出用于打开它的程序.(但是,检查extn可能是最简单的方法,通常也是正确的.)
这没有经过测试,但它是这样的:
private string MimeType (string Filename) { string mime = "[default]"; string ext = GetExtension(Filename).ToLower(); Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext); if (rk != null && rk.GetValue("Content Type") != null) mime = rk.GetValue("Content Type").ToString(); return mime; }
(对不起,自从我完成注册表工作以来已经有一段时间了)
我们这样做的方式(我现在无法找到确切的代码以便以下未经测试)是尝试将图像作为位图加载.如果失败,它不是图像
bool isImage; try { Bitmap.FromFile(filePath); isImage = true; } catch { isImage = false; }