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

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

有帮助吗?

解决方案

stackoverflow上有一些关于如何从图像中读取EXIF信息的问题,例如: 如何使用 C# 从文件中获取 EXIF 数据

其他提示

使用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"));

来完成这个最简单的方法是,假定图像是方形的是取文件大小的字节数,并采取平方根。这将是您的宽度和高度。

256 bytes = 16px x 16px

:-)

或者,你可以尝试使用阅读此 CodePlex上库

为了获得图像的宽度和高度(基本上,因为你把它的元数据),你的的以的打开文件,分析某种标题信息和获取你希望这样。

您就不必阅读所有的颜色/位图信息,只有头。

这是同样的方式的Windows能够加载从应用程序文件的图标,而无需实际执行它们。

要读取Windows资源管理器中显示的属性,你可以使用的微软壳牌控制和自动化的组件。这样做的好处是,你不需要任何第三方库(COM对象已经存在),或者用于解析图像头额外的代码,它会用多种格式工作。

示例代码可在应答被发现一个相关问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top