如何使用 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);
根据您的示例文件,它特定于 Nikon 的 MakerNote
,并且特定于 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
- JPEG 解释,见片段
APP1
:
- Exif 解释,见标签
0x927c
:
- Nikon's MakerNote 解释,见标签
0x0091
:
- ShotInfoD5100解释,见索引
801
MakerNote
s 是专有的:如何存储数据取决于每个制造商。这些文件很少见——大多数是业余爱好者对这些信息进行逆向工程——这就是为什么只有选定的软件才能为选定的模型读取它。在这一点上,您可能会意识到存在数十家制造商和数十种型号,为此你们都必须以不同的方式解释字节 - 这需要大量工作!根据 exif_read_data()
s ChangeLog PHP 7.2.0 无处声称完全支持 Nikon。
您必须自己解析 MakerNote
或找到 PHP code/library/software ,后者已经为您解析过了。作为最后的手段,您可以执行非 PHP 软件(例如 ExifTool)来获得您想要的。
我已经能够使用 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);
根据您的示例文件,它特定于 Nikon 的 MakerNote
,并且特定于 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
- JPEG 解释,见片段
APP1
:- Exif 解释,见标签
0x927c
:- Nikon's MakerNote 解释,见标签
0x0091
:- ShotInfoD5100解释,见索引
801
- ShotInfoD5100解释,见索引
- Nikon's MakerNote 解释,见标签
- Exif 解释,见标签
MakerNote
s 是专有的:如何存储数据取决于每个制造商。这些文件很少见——大多数是业余爱好者对这些信息进行逆向工程——这就是为什么只有选定的软件才能为选定的模型读取它。在这一点上,您可能会意识到存在数十家制造商和数十种型号,为此你们都必须以不同的方式解释字节 - 这需要大量工作!根据 exif_read_data()
s ChangeLog PHP 7.2.0 无处声称完全支持 Nikon。
您必须自己解析 MakerNote
或找到 PHP code/library/software ,后者已经为您解析过了。作为最后的手段,您可以执行非 PHP 软件(例如 ExifTool)来获得您想要的。