只能使用exiftool

时间:2018-02-02 11:55:52

标签: vb.net batch-file exif exiftool

嗨社区,

几天后,我在试图获取.jpg或.png图像文件的日期时被卡住,拍照时。 我相信它被称为 DateTimeOriginal 。 我正在尝试做的只是获取这一个特定的信息, DateTimeOriginal ,而不是更多,而不是更少。

这是自制项目的一部分,该项目是按拍摄日期对照片进行分类的程序。 我正在用VB编程,对于exif数据我正在调用批处理文件。

所以我知道如何使用exiftool。它的常见用途是: exiftool file.jpg 但是我需要这样的东西: exiftool -DateTimeOriginal file.jpg >> DateTaken.txt 我试过这个,但是我没有得到Date,我只得到了目录中找到的任何jpg的列表,但是没有元数据。 我正在寻找这样的任何选项,但我找不到任何有用的东西。也许还有另一种更有效的方法来获取图像的元数据,只使用VB。

有没有人提出建议或其他想法?

感谢

2 个答案:

答案 0 :(得分:1)

您拥有从文件(exiftool -DateTimeOriginal file.jpg)获取DateTimeOriginal标记的正确命令。但是你说你在目录中得到一个文件名列表,这听起来像是在传递一个目录名,而不是一个文件名。如果您希望exiftool -if "$DateTimeOriginal" -DateTimeOriginal C:/path/to/dir仅获取目录中具有标记值的文件,请使用DateTimeOriginal。那时没有列出任何没有PNG:CreationTime的文件。

需要注意的一点是,Windows“Date Taken”属性将由各种元数据标签填充,具体取决于文件类型。例如,在PNG文件中,Windows将使用EXIF:DateTimeOriginal。在jpg文件中,Windows将依次使用IPTC:DateCreated + IPTC:TimeCreatedXMP:CreateDateEXIF:CreateDateXMP:DateTimeOriginal和{{1}}标记。

答案 1 :(得分:0)

经过一番挖掘后,我发现如果是位图,你可以获得一个属性列表。

不幸的是,属性ID是数字的而且非常神秘。

查看here以了解更多信息

经过多挖掘后,似乎propertyId& h132(十六进制数)是ascii编码中存储为整数数组的日期。此函数查找propertyid& h132并将日期信息作为字符串返回year:month:date hour:minute:second format。

您可能会获得本地化的变体...例如,使用 string input = file.Name; string input2 = file.Name; int indexInterval = input.IndexOf("+"); int indexDate = input2.IndexOf("_"); if (indexInterval > 0) input = input.Substring(0, indexInterval); if (indexDate > 0) input2 = input2.Substring(0, indexDate); string newInterval = input; string newDate = input2; /:作为日期分隔符等,因此,要将其解析为日期类型,您可能需要解决这个问题。

-