PHP中如何正确获取图片的Description元数据
问题原因
无法读取到Description元数据的核心原因有两点:
- PHP原生
exif_read_data函数仅支持解析标准EXIF结构内的标签,从你贴出的运行结果看,FILE.SectionsFound仅返回ANY_TAG, IFD0, GPS,说明目标图片的描述信息没有存储在标准EXIF的IFD0段(标准EXIF规范中,图片描述对应IFD0.ImageDescription标签,标签ID为270)。 - GIMP写入图片Description时,默认优先将信息存储在XMP元数据段或IPTC元数据段,这两个段不在PHP原生exif扩展的默认解析范围内,因此遍历返回结果找不到对应字段。
解决方法
优先读取XMP段(适配GIMP默认写入逻辑)
GIMP保存图片时填写的描述默认写入XMP的dc:description节点,可通过解析文件内的XMP段获取内容,同时兼容标准EXIF、IPTC段的读取,代码示例:
function getImageDescription(string $filePath): ?string { // 先读取标准EXIF的ImageDescription,兼容旧格式图片 if (function_exists('exif_read_data')) { $exif = @exif_read_data($filePath, 'IFD0', true); if (!empty($exif['IFD0']['ImageDescription'])) { return trim($exif['IFD0']['ImageDescription']); } } // 读取文件内容解析XMP段 $fileContent = file_get_contents($filePath); if (!$fileContent) { return null; } // 定位XMP段起止位置 $xmpStart = strpos($fileContent, '<x:xmpmeta'); $xmpEnd = strpos($fileContent, '</x:xmpmeta>'); if ($xmpStart !== false && $xmpEnd !== false) { $xmpLength = $xmpEnd - $xmpStart + strlen('</x:xmpmeta>'); $xmpData = substr($fileContent, $xmpStart, $xmpLength); // 匹配dc:description节点内容 if (preg_match('/<dc:description>.*?<rdf:li[^>]*>(.*?)<\/rdf:li>.*?<\/dc:description>/s', $xmpData, $matches)) { return trim($matches[1]); } } // XMP未找到时尝试读取IPTC段 getimagesize($filePath, $fileInfo); if (!empty($fileInfo['APP13'])) { $iptc = iptcparse($fileInfo['APP13']); // IPTC规范中图片描述对应2#120字段 if (!empty($iptc['2#120'])) { return trim(implode('', $iptc['2#120'])); } } return null; } // 调用示例 $description = getImageDescription('img.jpg'); echo $description;
调整exif_read_data参数兜底
你之前调用exif_read_data时第二个参数传值为0,可以显式指定需要解析的段,尝试读取可能遗漏的EXIF标签:
// 第二个参数指定要解析的所有段类型 $exif = exif_read_data('img.jpg', 'ANY_TAG,IFD0,EXIF,COMMENT', true); // 直接读取ImageDescription字段 var_dump($exif['IFD0']['ImageDescription'] ?? null);
注意事项
- 如果图片在保存时被压缩工具、传输流程去除了元数据,所有方法都无法读取到Description,可以先在GIMP中打开图片属性窗口,确认Description存储在EXIF、XMP、IPTC哪个标签页下,再对应调整读取逻辑。
- 读取时建议按照
XMP > 标准EXIF > IPTC的优先级匹配,可覆盖绝大多数图片的描述存储场景。
内容的提问来源于stack exchange,提问作者provance
相关产品推荐
相关产品推荐

