Php exif_读取_数据vs exec(exiftool…)

Php exif_读取_数据vs exec(exiftool…),php,exec,exiftool,Php,Exec,Exiftool,我有以下问题: 我在一个新继承的项目中从事维护工作。在本项目中,开发人员通过以下方式处理图像和视频的元数据: function getRotationFromFile($realPath) { $retVal = Array(); $cmd = variable_get("exiftool",null) . "\"$realPath\"" . " | grep -E 'Rotation|Camera Identifier'"; exec($cmd, $output);

我有以下问题:

我在一个新继承的项目中从事维护工作。在本项目中,开发人员通过以下方式处理图像和视频的元数据:

function getRotationFromFile($realPath) {
    $retVal = Array();

    $cmd = variable_get("exiftool",null) . "\"$realPath\"" . " | grep -E 'Rotation|Camera Identifier'";
    exec($cmd, $output);

    foreach ($output as $row){
        $key = trim(strstr($row, ':', true));
        $value = trim(str_replace(": ", "", strstr($row, ': ')));
        $retVal[$key] = $value;
    }
    return $retVal;
}
如您所知,此函数调用exec(exiftool..)并检索一些元数据。 我知道在php中也存在这样的情况

我的问题是:

  • 最好的解决方案是什么
  • 谁跑得更快
  • 谁是更“正确”的人
  • 最后,我尝试搜索,但没有找到是否exif\u read\u data在源代码中使用exiftool

  • 提前谢谢你

    我创建了一个PHP脚本,允许通过exiftool快速读写。 我们将它与gearman一起使用,因此它作为后台服务运行,exiftool最慢的部分是启动它,然后通过将作业传递给gearman从PHP脚本调用它。 我们运行了这个脚本的大约5个实例,因此它可以快速地提供服务。 单个进程应该能够在大约1-2秒内处理大约100个文件,这当然取决于文件大小和存储速度,但它确实可以很好地扩展。 过去5个月,我们在数字资产管理平台上已将其用于生产


    我创建了一个PHP脚本,允许通过exiftool快速读写。 我们将它与gearman一起使用,因此它作为后台服务运行,exiftool最慢的部分是启动它,然后通过将作业传递给gearman从PHP脚本调用它。 我们运行了这个脚本的大约5个实例,因此它可以快速地提供服务。 单个进程应该能够在大约1-2秒内处理大约100个文件,这当然取决于文件大小和存储速度,但它确实可以很好地扩展。 过去5个月,我们在数字资产管理平台上已将其用于生产


    PHP函数
    exif\u read\u data
    仅支持JPEG和TIFF文件类型。命令行实用程序
    exiftool
    -更多信息。

    PHP函数
    exif\u read\u data
    仅支持JPEG和TIFF文件类型。命令行实用程序
    exiftool
    -更多。

    据我所知,exif\u read\u数据将只读取exif数据,而不会读取任何其他类型的元数据,并且仅限于Tiff和Jpg文件。EXIF块很少出现在视频文件中。此外,您在该代码位中查找的两个标记,
    摄像机标识符
    旋转
    ,不是标记,而是EXIF规范的一部分<代码>摄像机标识符似乎是Quicktime标签,而
    旋转
    似乎是尼康和佳能makernotes标签

    可以做的一件事是告诉Exiftool只显示您想要的标签,而不是通过grep进行管道传输。这可以通过在命令行中添加
    -CameraIdentifier-Rotation
    来完成。安静选项
    -q
    也可能对此有用

    您可能还需要查看
    Orientation
    标记,因为这是保存图像文件方向的标准标记


    @tsmgeek可能有最好的解决方案,因为他们对启动开销的看法是正确的

    据我所知,exif_read_数据将只读取exif数据,而不会读取任何其他类型的元数据,并且仅限于Tiff和Jpg文件。EXIF块很少出现在视频文件中。此外,您在该代码位中查找的两个标记,
    摄像机标识符
    旋转
    ,不是标记,而是EXIF规范的一部分<代码>摄像机标识符似乎是Quicktime标签,而
    旋转
    似乎是尼康和佳能makernotes标签

    可以做的一件事是告诉Exiftool只显示您想要的标签,而不是通过grep进行管道传输。这可以通过在命令行中添加
    -CameraIdentifier-Rotation
    来完成。安静选项
    -q
    也可能对此有用

    您可能还需要查看
    Orientation
    标记,因为这是保存图像文件方向的标准标记


    @tsmgeek可能有最好的解决方案,因为他们对启动开销的看法是正确的

    谢谢你花时间在这篇老帖子上,这是一个更完整的答案,接近我的要求。嘿,我甚至没赶上日期。它刚刚出现在我的ExifTool过滤器的顶部,所以我认为它是新的。谢谢你花时间阅读这篇旧文章,这是接近我所问的更完整的答案。嘿,我甚至没有赶上日期。它只是弹出到我的ExifTool过滤器的顶部,所以我认为它是新的。