代码之家  ›  专栏  ›  技术社区  ›  Gabe Moothart

在c语言中读取扩展图像属性#

  •  8
  • Gabe Moothart  · 技术社区  · 15 年前

    如果可能(出于性能原因),我希望在不打开磁盘的情况下查找磁盘上图像的高度/宽度。

    用于图像的Windows属性窗格包含宽度、高度、位深度等信息,这使我相信它正在文件的某个位置存储元数据。如何访问此信息?

    7 回复  |  直到 15 年前
        1
  •  5
  •   Md Shahzad Adil    14 年前

    使用System.Drawing.Image类。

            Image img = Image.FromFile(fileName);
            ImageFormat format = img.RawFormat;
            Console.WriteLine("Image Type : "+format.ToString());
            Console.WriteLine("Image width : "+img.Width);
            Console.WriteLine("Image height : "+img.Height);
            Console.WriteLine("Image resolution : "+(img.VerticalResolution*img.HorizontalResolution));
    
            Console.WriteLine("Image Pixel depth : "+Image.GetPixelFormatSize(img.PixelFormat));
            Console.WriteLine("Image Creation Date : "+creation.ToString("yyyy-MM-dd"));
            Console.WriteLine("Image Creation Time : "+creation.ToString("hh:mm:ss"));
            Console.WriteLine("Image Modification Date : "+modify.ToString("yyyy-MM-dd"));
            Console.WriteLine("Image Modification Time : "+modify.ToString("hh:mm:ss"));
    
        2
  •  4
  •   Community Bayu Bramantya    7 年前

    关于如何从图像中读取EXIF信息,存在一些stackoverflow问题,例如: How to get the EXIF data from a file using C#

        3
  •  4
  •   Chris Ballance    15 年前

    实现这一点的最简单方法是,假设图像是正方形,则取文件大小(以字节为单位)并取平方根。这将是你的宽度和高度。

    256 bytes = 16px x 16px
    

    :-)

    或者,您可以尝试使用以下命令读取图像的EXIF信息 codeplex library

        4
  •  2
  •   Thomas    15 年前

    Windows不在文件系统的任何特殊位置存储(此)元数据;“属性”窗口只是从图像文件本身读取它们。

    我认为.NET没有提供任何函数来读取图像中的元数据而不加载整个图像。如果您只处理有限数量的不同图像格式(例如,仅JPEG、PNG和GIF),那么自己从图像标题读取大小应该不会太难。

    Unix file utility . 它能够检测许多不同图像格式的大小,并且启动速度非常快。

        5
  •  2
  •   Mike J    15 年前

    为了获得图像的宽度和高度(本质上,正如您所说的元数据),您需要 不得不 打开文件,解析某些类型的头信息,然后通过这种方式获得所需的内容。

    这与Windows能够从应用程序文件加载图标而不实际执行它们的方式相同。

        7
  •  0
  •   Community Bayu Bramantya    7 年前

    要读取Windows资源管理器显示的属性,可以使用 MicrosoftShell控件和自动化 组成部分这样做的好处是,您不需要任何第三方库(COM对象已经存在)或额外的代码来解析图像头,并且它可以处理各种格式。

    示例代码可以在对 related question