如何使用PHP从图像文件中读取Lightroom关键字?

如何使用PHP从图像文件中读取Lightroom关键字?,php,exif,photography,lightroom,Php,Exif,Photography,Lightroom,我有一个允许用户上传照片的照片社区()。我的平台是PHP/CodeIgniter 作为上传过程的一部分,我已经在使用PHP的EXIF\u read\u data函数读取EXIF信息,该函数运行良好。我阅读相机的详细信息,并在“信息”选项卡上显示这些信息 除此之外,用户在上传照片后还需要在网站上手动设置照片标题、描述和标签。但是,有些用户在其图像管理程序中管理这些字段,例如Lightroom。如果我也能读到这些,那就太好了,上传将成为一种乐趣 我已经改进了我的EXIF阅读来阅读“标题”,这样用户就

我有一个允许用户上传照片的照片社区()。我的平台是PHP/CodeIgniter

作为上传过程的一部分,我已经在使用PHP的EXIF\u read\u data函数读取EXIF信息,该函数运行良好。我阅读相机的详细信息,并在“信息”选项卡上显示这些信息

除此之外,用户在上传照片后还需要在网站上手动设置照片标题、描述和标签。但是,有些用户在其图像管理程序中管理这些字段,例如Lightroom。如果我也能读到这些,那就太好了,上传将成为一种乐趣

我已经改进了我的EXIF阅读来阅读“标题”,这样用户就不必在上传后再设置图片标题了。现在,我正在寻找阅读关键字,这是我被卡住的地方。以下是Lightroom中一幅图像的部分屏幕截图:

我可以读取元数据,但如何读取关键字?它不在元数据中这一事实让我怀疑它是否有可能?我已经尝试使用EXIF\u read\u数据读取我能获得的每个值(任何标签、IFD0、EXIF、APP12),但是找不到关键字


有什么想法吗?

尝试使用一个比exif\u read\u data()更全面的库来读取exif数据。

正如建议的那样,您可能必须使用另一种读取元数据的方法

图像关键字可以存储在IPTC中,而不是存储在EXIF中。我不知道是否有一个标准的平台方法来阅读iptc,但快速的谷歌显示了这一点


经过长时间的研究,我找到了在jpg文件中获取lightroom导出的关键字的解决方案:

$image = getimagesize($imagepath, $info);
if(isset($info['APP13']))
{
    $iptc = iptcparse($info['APP13']);
    $keywordcount = count($iptc["2#025"]);
    for ($i=0; $i<$keywordcount; $i++)
    { 
        echo "keyword : " . $iptc["2#025"][$i] . "<br/>";
    }
}
$image=getimagesize($imagepath,$info);
如果(isset($info['APP13']))
{
$iptc=iptcparse($info['APP13']);
$keywordcount=count($iptc[“2#025”]);

对于($i=0;$iI认为您应该使用其他软件检查图像,这样您就可以排除php元数据读取中的任何限制。另外,LR是如何配置为导出关键字的?参见例如,谢谢。我实际上下载了一张照片,一位用户上传到我的网站,他声称照片中有关键字。我包含的屏幕截图显示ame photo已导入LR。我认为这验证了文件是否包含它?嗨,Ferdy。这是一篇旧文章。问题是否已解决?我正在寻找从LR保存keywrods,以及一系列其他元数据值。我看到的许多示例代码建议读取APP13数组,但我的测试图像中似乎没有这些。@M61Vulcan Sc滚下来,答案就在那里。感谢您对这个老话题的快速回复。到foto.biz的链接不再有效,php.net iptcparse解释继续引用我元数据中没有的“APP13”。我在IFD0.ExtensibleMetadataPlatform中找到了关键字以及Lightroom标题和标题:作为一个大的长文档ed字符串(大约266个字符,取决于图像)但是当我开始切割字符串时,它变成了12917个字符,其中包含大量其他元数据。可能在某个地方有隐藏字符。无论如何,它都超出了这个问题的范围。我会回到它。谢谢你的建议,但是PEL可以在没有命令行的情况下安装吗?我问的原因是因为我的主机。我有同样的问题,所以我只是下载了源代码,并将其上传到我服务器上的某个地方。谢谢,非常有用。我将尝试一下,并很快报告。它可以工作:)iptcparse函数的官方示例立即为我提供了所需的结果。非常感谢!