如何使用 PHP 获取 EXIF 快门计数(imageNumber)?
Posted
技术标签:
【中文标题】如何使用 PHP 获取 EXIF 快门计数(imageNumber)?【英文标题】:How to get the EXIF shutter count (imageNumber) using PHP? 【发布时间】:2022-01-20 21:19:48 【问题描述】:我已经能够使用exif_read_data()
获取EXIF 数据。根据 php 文档中提供的EXIF documentation,必须有一个imageNumber
标签(我知道这不能保证),但我无法在我的测试图像上看到类似的东西(来自尼康的未经编辑的 JPG D5100)。根据在线快门计数网站,同一张图片似乎携带有关快门计数的信息。
如果您能阐明我可能做错了什么以获得此号码,我将不胜感激。或者他们在图像元中存储快门计数的任何其他地方或方法?
编辑:
这是我试图解决的代码,我正在尝试获取imageNumber
,这显然无法获取。但是在线工具会在同一张图像上显示快门计数。我想使用 PHP(甚至使用另一种语言)获得相同的结果。任何帮助表示赞赏。
$exif_data = exif_read_data ( $_FILES['fileToUpload']['tmp_name']);
print_r( $exif_data);
【问题讨论】:
如果您没有链接到任何内容(既不是您的文件,也不是一个网站),那么这个 Q 就太笼统了 - 人们必须能够复制您的体验。元数据并不暗示 Exif,枚举所有属性间接告诉您哪些未使用 - 不能保证属性0x9211 ImageNumber
已存储。
@AmigoJack 请检查代码的编辑。我找不到原点,这就是为什么我没有在编辑之前发布链接。但这里是它指向Exif2 的文档虽然我知道这个imageNumber
标签并不能保证,但不知何故,这些在线工具(如camerashuttercount)会在同一张图像上显示快门计数。你知道他们是怎么做到的吗?相机制造商还有其他存储快门次数的方法吗?
是的:在0x927c MakerNote
(文字第27页,PDF中的数字第33页)每个制造商都有自己的专有结构来存储数据,您必须找到能够读取的好软件它(即ExifTool)。因此,我们需要您的文件的一个示例(将图片上传到图片托管商时,您必须检查诸如 Exif 之类的元数据没有被剥离)。
@AmigoJack 我有来自相机的uploaded an image。在标签 MakeNote
下,它只有 Nikon 作为数据。请查看我的图片,看看您是否知道在哪里可以找到快门数。
【参考方案1】:
根据您的示例文件,它特定于 Nikon 的 MakerNote
,并且特定于 D5100 型号。在详细模式下使用ExifTool 显示结构:
JPEG 解释,见片段> 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
APP1
:
Exif 解释,见标签0x927c
:
Nikon's MakerNote 解释,见标签0x0091
:
ShotInfoD5100 解释,见索引801
MakerNote
s 是专有的:如何存储数据取决于每个制造商。这些文档很少见——主要是业余爱好者对该信息进行逆向工程——这就是为什么只有选定的软件才能完全读取选定模型的信息。此时您可能会意识到存在数十个具有数十个模型的制造商,为此您必须以不同的方式解释字节 - 这是很多工作!根据exif_read_data()
s ChangeLog PHP 7.2.0 根本没有声称支持 Nikon。
您必须自己解析MakerNote
或找到已经为您完成此操作的PHP 代码/库/软件。作为最后的手段,您可以执行非PHP 软件(例如ExifTool)来获得您想要的。
【讨论】:
非常感谢您在这方面分享知识和教育我。我了解该项目的深度,并且我将其视为一个宠物项目,但了解它的范围,我将不得不将其保留一段时间,似乎考虑到我必须腾出的时间有限。再次感谢您在这里教育我。干杯伙伴!以上是关于如何使用 PHP 获取 EXIF 快门计数(imageNumber)?的主要内容,如果未能解决你的问题,请参考以下文章