【问题标题】:JPEG - reading focal length from fileJPEG - 从文件中读取焦距
【发布时间】:2012-10-01 04:09:02
【问题描述】:

在研究新相机时,我认为对我过去在照片中使用的最常见设置进行概述会很有趣。我主要对检索图片中使用的焦距感兴趣。虽然光圈/iso/快门速度也很受欢迎。

虽然在过去 10 年中使用过不同的相机,但我也需要将其转换为 35 毫米等效格式以进行比较。我知道这是传感器尺寸的函数,特别是传感器裁剪因子乘以焦距。

四处寻找,我没有找到 jpeg 文件格式的标题。我了解到您可以在名为 wotsit.org 的网站上找到其中的大部分内容,但显然我无法从那里下载任何内容。我对 jpeg 文件几乎一无所知,但我很确定他们使用 exif 格式来保存我正在寻找的图像元数据。

http://www.exif.org/Exif2-1.PDF,第 49 页,显示焦距在某处存储为有理数*。但是我很难掌握结构并将其应用到代码中。此外,要计算等效的 35 毫米比率,我必须知道相机的传感器尺寸,我在该文档中找不到。

有人可以给我提示/指出 jpeg / exif 文件的实际结构的方向吗?我将在这个项目中使用 C++。我知道这一定是可能的,windows 显示 35mm eqv。我的照片。

*这似乎是两个代表分数的ulongs,除以它时,给出焦距?

TL;DR:如何从 jpeg 文件中提取焦距和传感器尺寸以计算 35mm 等效焦距?

谢谢!

【问题讨论】:

  • 您真的要为此编写自己的应用程序吗? Exiftool 命令行应用程序将为您提供焦距owl.phy.queensu.ca/~phil/exiftool
  • 我不认为从一个文件中检索两个数字会是一项如此艰巨的任务,但看起来确实如此。也许如果 exiftool 接受脚本命令/在 dirs 上工作会使用它,检查一下。
  • 应该可以让命令行工具做你想做的事(也许用一点 shell 脚本),如果不是,它也是一个 perl 库,但我怀疑你会需要它。

标签: c++ jpeg exif


【解决方案1】:

除非您的目的是学习如何阅读这些图像,否则我建议您使用诸如 libexif 之类的库。

【讨论】:

  • 我没有兴趣这样做。我可能最终会使用它,真的希望不要有这么大的库来做这么小的事情。
【解决方案2】:

简短回答:http://www.exiv2.org/

【讨论】:

  • 与上面的评论相同,但谢谢。很好的文档,正在浏览它。你以前用过吗?
  • @Shaggi: 1) 我的答案是第一个,2) 不太一样,libexif 是旧的普通 C,libexiv2 是新的,C++ 并且更易于使用:)
  • @Shaggi:是的,我用过一点。
猜你喜欢
  • 2012-08-06
  • 2017-08-29
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 2013-10-14
相关资源
最近更新 更多