我有一些cr2文件。
我想创建一个C ++程序,或编写一个脚本,用不同的焦距分隔不同的cr2文件,并将它们放在不同的目录中。
我该怎么做?
我可以访问佳能EDSDK和LibRaw,但我不知道在哪里可以找到焦距信息。
我还有一个可以读取元数据的小实用程序“ExifTool” - 但我不知道如何让它做我想做的事情 - 并且当通过网络读取5000个文件时,gui版本似乎崩溃了。
请有人给我一个建议吗?
答案 0 :(得分:1)
EXIF规范可在此处找到:
http://www.exif.org/specifications.html
您需要读取EXIF数据,并找到包含37386或0x920A“标签”的条目。接下来是“RATIONAL”数,其基本上是形成分数的两个无符号整数,例如400/20 = 20mm,即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并相应地移动文件。
我不打算为你编写代码,但上述信息应该可以给你一个想法。