4

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

作为上传过程的一部分,我已经在使用 PHP 的exif_read_data函数读取 EXIF 信息,该函数运行良好。我阅读了相机详细信息并将其显示在信息选项卡上。

最重要的是,用户需要在上传照片后在网站上手动设置照片标题、描述和标签。但是,一些用户在他们的图像管理程序中管理这些字段,例如 Lightroom。如果我也能读到这些,那就太好了,上传将成为一种完全的快乐。

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

在此处输入图像描述

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

有什么想法吗?

4

3 回答 3

6

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

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

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

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

于 2011-08-13T22:46:10.560 回答
1

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

于 2011-08-13T21:52:14.747 回答
1

经过长时间的研究,我找到了在 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/>";
    }
}
于 2018-03-23T22:22:39.063 回答