文件是图像吗?

jon*_*n37 11 c# image

在C#中,判断特定文件是否为图像的最佳方法是什么?

jjn*_*guy 10

大多数图片格式在图像的前几个字节中指定文件类型.您可以读取几个字节并查找正确的标头.

文件扩展名在技术上不包含有关图像的任何重要数据.它只是帮助操作系统找出用于打开它的程序.(但是,检查extn可能是最简单的方法,通常也是正确的.)


Mat*_*nde 7

这没有经过测试,但它是这样的:

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;
}
Run Code Online (Sandbox Code Playgroud)

(对不起,自从我完成注册表工作以来已经有一段时间了)


小智 5

我们这样做的方式(我现在无法找到确切的代码以便以下未经测试)是尝试将图像作为位图加载.如果失败,它不是图像

bool isImage;
try
{
  Bitmap.FromFile(filePath);
  isImage = true;
}
catch
{
  isImage = false;
}
Run Code Online (Sandbox Code Playgroud)