我想找到磁盘上的高度/图像的宽度,而无需打开它,如果可能的话(由于性能原因)。
对于图像的Windows属性面板包含诸如宽,高,位深度等,这使我相信,它是存储在文件元数据的地方的信息。 我怎样才能获得这些信息?
我想找到磁盘上的高度/图像的宽度,而无需打开它,如果可能的话(由于性能原因)。
对于图像的Windows属性面板包含诸如宽,高,位深度等,这使我相信,它是存储在文件元数据的地方的信息。 我怎样才能获得这些信息?
有关于如何读取图像,如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
:-)
或者,你可以尝试使用阅读此图像的Exif信息的CodePlex库
Windows不存储在文件系统中的任何特别的地方(这)元数据; 属性窗口简单地从图像文件本身的读取它们。
我不认为.NET提供的任何功能,而无需加载整个图像读取距离图像的元数据。 如果你正在处理的只是不同的图像格式(如JPEG只,PNG和GIF),数量有限,应该不会太难读取图像大小头自己。
如果,另一方面,你必须处理许多图像格式,也许你可以看看源代码的Unix file
工具 。 它管理检测的很多很多不同的图像格式大小,是极快的启动。
为了获得图像的宽度和高度(基本上,因为你把它的元数据),你将不得不打开该文件,解析某种头信息,并获得你想要的那种方式。
你不必阅读所有的颜色/位图信息,只有头。
这也是同样的道理的Windows能够加载从应用程序文件的图标,而无需实际执行它们。
检查这个问题:
读取由Windows资源管理器中显示的属性,你可以使用微软壳牌控制和自动化组件。 这样做的好处是,你不需要任何第三方库(COM对象已经存在),或者额外的代码解析图像头,它可以配合多种格式的工作。
示例代码可以在回答一个可以找到相关的问题 。