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

时间:2011-08-13 21:26:28

标签: php exif photography lightroom

我有一个照片社区(www.jungledragon.com),可让用户上传照片。我的平台是PHP / CodeIgniter。

作为上传过程的一部分,我已经使用PHP的 exif_read_data 函数读取了EXIF信息,这样可以正常工作。我阅读了相机的详细信息,并在信息标签上显示。

最重要的是,用户需要在上传照片后在网站上手动设置照片标题,说明和标签。但是,有些用户在其图像管理程序中管理这些字段,例如Lightroom。如果我能够阅读这些内容会很棒,上传会变得非常快乐。

我已经改进了我的EXIF阅读以阅读“标题”,这样用户不必在上传后设置图像标题。现在我正在寻找关键词,这是我被困的地方。以下是Lightroom中图像的部分截图:

enter image description here

我可以阅读元数据,但如何阅读关键字?事实上它不在元数据内部让我想知道它是否可能?我已经尝试使用exif_read_data读取我可以获得的每个值(ANY_TAG,IFD0,EXIF,APP12),但找不到关键字。

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

根据建议,您可能必须使用其他方法来阅读元数据。

http://www.foto-biz.com/Lightroom/Exif-vs-iptc-vs-xmp

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

http://php.net/manual/en/function.iptcparse.php

答案 1 :(得分:1)

尝试使用PEL,这是一个比exif_read_data()更全面的库,用于exif数据。

答案 2 :(得分:0)

经过长时间的研究,我找到了解决方案,以便在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/>";
    }
}