我有一些 cr2 文件。
我想做一个C++程序,或者写一个脚本,把不同焦距的cr2文件分开,放在不同的目录下。
我怎样才能做到这一点 ?
我可以访问佳能 EDSDK 和 LibRaw,但我不确定在哪里可以找到焦距信息。
我还有一个可以读取元数据的小实用程序“ExifTool”——但我不知道如何让它做我想做的事情——当通过网络读取 5000 个文件时,gui 版本似乎崩溃了......
请问有人可以给我一个建议吗?
EXIF 规范可以在这里找到:
http://www.exif.org/specifications.html
您将需要读取 EXIF 数据,并找到包含“标签”37386 或 0x920A 的条目。后面跟着一个“RATIONAL”数,它本质上是两个无符号整数组成一个分数,例如 400/20 = 20 mm,80/5 或 20/1 也是如此。14.5mm 镜头必须(至少)存储为 29/2,但可以存储为 145/10 或 1450/100 - 或大量其他变体。
当然,如果您使用例如 ExifTool,您可以使用脚本轻松完成此操作,或者使用它的 Perl 绑定在 Perl 中编写脚本。
还有一个与 exiftool 一起使用的 C++ 接口:http: //owl.phy.queensu.ca/~phil/cpp_exiftool/
使用从TagInfo
中返回的ImageInfo()
,应该可以找到 FocalLength 并相应地移动文件。
我不会给你写代码,但是上面的信息应该可以给你一个思路。