cr2提取具有特定焦距的图像

时间:2013-12-28 01:47:57

标签: c++ exif canon-sdk

我有一些cr2文件。

我想创建一个C ++程序,或编写一个脚本,用不同的焦距分隔不同的cr2文件,并将它们放在不同的目录中。

我该怎么做?

我可以访问佳能EDSDK和LibRaw,但我不知道在哪里可以找到焦距信息。

我还有一个可以读取元数据的小实用程序“ExifTool” - 但我不知道如何让它做我想做的事情 - 并且当通过网络读取5000个文件时,gui版本似乎崩溃了。

请有人给我一个建议吗?

1 个答案:

答案 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并相应地移动文件。

我不打算为你编写代码,但上述信息应该可以给你一个想法。