如何在不加载图像的情况下获取图像尺寸

时间:2014-02-19 13:13:21

标签: image c#-4.0 visual-studio-2013

我想我要求不可能,但无论如何都要问...... 我有一个文件夹(有几个子文件夹),其中包含许多JPG和PNG格式的图像。我需要一个工具来创建这些文件的列表,包括它们的尺寸。 (宽度和高度。)为此,我可以将图像加载到位图中并读取宽度/高度属性。如果图像本身不是那么大,那就没关系了...... 标准图像尺寸约为800万像素,但约10%是40到100万像素。 (是的,这是10,000x10,000像素。)这意味着我正在处理每个50到100 MB的PNG文件。总共有7,500张图像,这意味着我的工具正忙着阅读大量文件数据 我需要一种更快的方式来读取这些文件类型的维度。不是因为内存使用,因为我的系统有32 GB RAM,但因为我不想等待45分钟才能完成索引......(好吧,有点夸张,但它并不快。)

2 个答案:

答案 0 :(得分:1)

您在以下链接(CodeProject)中有完整的文章和工作代码。

http://www.codeproject.com/Articles/35978/Reading-Image-Headers-to-Get-Width-and-Height

他正在阅读标题信息以获取图像的尺寸。表现看起来不错。

答案 1 :(得分:0)

看看jhead here。或exiv2,请参阅here

它非常快,您可以使用“system()”之类的东西来运行它并解析输出。

示例输出:

File name    : b.jpg
File size    : 643664 bytes
File date    : 2014:02:19 13:07:29
Camera make  : NIKON CORPORATION
Camera model : NIKON D2Xs
Date/Time    : 2007:08:01 11:02:28
Resolution   : 1200 x 797
Flash used   : No
Focal length : 28.0mm  (35mm equivalent: 42mm)
Exposure time: 0.0016 s  (1/640)
Aperture     : f/7.1
ISO equiv.   : 250
Whitebalance : Auto
Metering Mode: center weight
Exposure     : shutter priority (semi-auto)
GPS Latitude : N 52d 13.3690m  0s
GPS Longitude: W  0d 52.7070m  0s
GPS Altitude :  456.00m

Exiv2也处理PNG文件,并且可以作为库进行C调用,因此可能更优雅。