如何使用 PHP 获取 EXIF 快门计数 (imageNumber)?

How to get the EXIF shutter count (imageNumber) using PHP?

我已经能够使用 exif_read_data() 获取 EXIF 数据。根据 PHP 文档中提供的 EXIF documentation,必须有一个 imageNumber 标签(我知道不能保证),但我无法在我的网站上看到类似的内容测试图像(来自尼康 D5100 的未经编辑的 JPG)。根据在线快门计数网站,同一图像似乎包含有关快门计数的信息。

如果您能说明我在获取此号码时可能做错了什么,我将不胜感激。或者他们是否有任何其他地方或方法将快门计数存储在图像元中?

编辑:

这是我尝试计算的代码,我正在尝试获取 imageNumber,但显然无法获取。但是在线工具会显示同一图像的快门数。我想使用 PHP(甚至使用其他语言)获得相同的结果。感谢任何帮助。

$exif_data = exif_read_data ( $_FILES['fileToUpload']['tmp_name']);
print_r( $exif_data);

根据您的示例文件,它特定于 NikonMakerNote,并且特定于 D5100 型号.在详细模式下使用 ExifTool 显示结构:

> exiftool -v DSC_8725.JPG
...
JPEG APP1 (65532 bytes):
  ExifByteOrder = MM
  + [IFD0 directory with 11 entries]
  | 0)  Make = NIKON CORPORATION
  | 1)  Model = NIKON D5100
...
  | 9)  ExifOffset (SubDirectory) -->
  | + [ExifIFD directory with 41 entries]
...
  | | 16) MakerNoteNikon (SubDirectory) -->
  | | + [MakerNotes directory with 55 entries]
...
  | | | 38) ShotInfoD5100 (SubDirectory) -->
  | | | + [BinaryData directory, 8902 bytes]
...
  | | | | ShutterCount = 41520

MakerNotes 是专有的:如何存储数据取决于每个制造商。这些文件很少见——大多数是业余爱好者对这些信息进行逆向工程——这就是为什么只有选定的软件才能为选定的模型读取它。在这一点上,您可能会意识到存在数十家制造商和数十种型号,为此你们都必须以不同的方式解释字节 - 这需要大量工作!根据 exif_read_data()s ChangeLog PHP 7.2.0 无处声称完全支持 Nikon

您必须自己解析 MakerNote 或找到 PHP code/library/software ,后者已经为您解析过了。作为最后的手段,您可以执行非 PHP 软件(例如 ExifTool)来获得您想要的。