阅读在C#扩展的图像性能(Read extended image properties in c#)

2019-07-31 00:11发布

我想找到磁盘上的高度/图像的宽度,而无需打开它,如果可能的话(由于性能原因)。

对于图像的Windows属性面板包含诸如宽,高,位深度等,这使我相信,它是存储在文件元数据的地方的信息。 我怎样才能获得这些信息?

Answer 1:

有关于如何读取图像,如EXIF信息的一些问题计算器: 如何使用C#来获得从文件的EXIF数据



Answer 2:

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


Answer 3:

做到这一点的最简单方法是,假定图像是方形的是取文件大小的字节数,并采取平方根。 这将是你的宽度和高度。

256 bytes = 16px x 16px

:-)

或者,你可以尝试使用阅读此图像的Exif信息的CodePlex库



Answer 4:

Windows不存储在文件系统中的任何特别的地方(这)元数据; 属性窗口简单地从图像文件本身的读取它们。

我不认为.NET提供的任何功能,而无需加载整个图像读取距离图像的元数据。 如果你正在处理的只是不同的图像格式(如JPEG只,PNG和GIF),数量有限,应该不会太难读取图像大小头自己。

如果,另一方面,你必须处理许多图像格式,也许你可以看看源代码的Unix file工具 。 它管理检测的很多很多不同的图像格式大小,是极快的启动。



Answer 5:

为了获得图像的宽度和高度(基本上,因为你把它的元数据),你将不得不打开该文件,解析某种头信息,并获得你想要的那种方式。

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

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



Answer 6:

检查这个问题:

  • 如何可靠地获得在.NET中的图像尺寸,而不加载图像?


Answer 7:

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

示例代码可以在回答一个可以找到相关的问题 。



文章来源: Read extended image properties in c#