gpt4 book ai didi

PHP exif_read_data 不再提取 GPS 位置

转载 作者:可可西里 更新时间:2023-11-01 00:29:53 26 4
gpt4 key购买 nike

我刚刚通过自制软件安装了 composer,而 brew 似乎安​​装了新版本的 php (5.6.24)。从那时起,使用 exif_read_data 提取其他元数据(模型、曝光、iso 等),但不再从照片中提取 GPS 信息,如“GPSLatitude”。

我通过 exiftool(独立的非 php 程序)运行了同一张照片,照片中确实存在 GPS 数据。

PHP 是用 exif 编译的(因为提取了一些信息),所以我很困惑为什么不再读取 GPS 数据。

最佳答案

这很可能是由于安全修复的回归导致 ext/exif 扩展在“未知”格式的情况下停止解析。

这应该在 7.x 分支(7.0.10 和 7.1.0 Beta 1)中修复应该包含对这些的适当修复,虽然它没有合并到 5.x 分支,它可能会找到它的方式那里。

如果你想要一个补丁(应该很容易转换成 5.x),那么我在这里提交: http://git.php.net/?p=php-src.git;a=commit;h=aabcb5481d9e717df77192dab2894468b9fc63b4

这里有一些关于 ext/exif 的工作原理和错误的背景:

在内部,当我们解析 exif 数据时,它会读出规范提供的标准 exif 标签,但是某些格式具有某些自定义标签。这些通常也会被解析,但是 ext/exif 的局限性在于我们仅(在包括 7.1 在内的稳定分支中)支持 6 种带有扩展标签的格式(每种格式的列表都包含在扩展中)。这就是回归的用武之地。在解析 EXIF 数据时,它按以下顺序完成:

  • 标准 EXIF 数据
  • 寻找已知格式来解析自定义标签,如果找到匹配的签名,则解析它们
  • 解析附加数据,如缩略图、GPS 等

安全修复导致了回归,因为您可以制作假签名并在内部绕过它,这可能会导致无效读取。如果我们知道的格式中烘焙的签名列表中的签名不匹配,修复程序将停止解析,从而停止解析并且不返回像缩略图这样的数据,导致 exif_t​​humbnail() 基本上不能用于除了 6格式。

目前在 7.x 分支中的修复恢复了这种行为并简单地继续解析那些额外的标签,因此我们不直接支持的那些函数和其他格式将再次起作用。

除此之外,在 7.2 中,我一直在添加对 Samsung、Panasonic 和 DJI 特定标签的支持,目前我也在研究 Sony 特定数据。我们在 php.net 上有一个错误报告,如果您有兴趣更深入地了解它,它会闪闪发光:https://bugs.php.net/bug.php?id=72735 .如果此补丁无法解决您的问题,我们非常欢迎您提交错误报告,以便我们研究解决此问题。

我希望这对您有所帮助,感谢您帮助使 PHP 变得更加强大!

关于PHP exif_read_data 不再提取 GPS 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38772471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com