php - 如何使用 PHP 从 JPG 读取 XMP 数据?

标签 php metadata jpeg xmp

PHP 内置了对读取 EXIF 和 IPTC 元数据的支持,但我找不到任何方法来读取 XMP?

最佳答案

XMP 数据直接嵌入到图像文件中,因此可以使用 PHP 的字符串函数从图像文件本身中提取它。

以下演示了此过程(我使用的是 SimpleXML,但所有其他 XML API 甚至简单而巧妙的字符串解析都可能为您提供相同的结果):

$content = file_get_contents($image);
$xmp_data_start = strpos($content, '<x:xmpmeta');
$xmp_data_end   = strpos($content, '</x:xmpmeta>');
$xmp_length     = $xmp_data_end - $xmp_data_start;
$xmp_data       = substr($content, $xmp_data_start, $xmp_length + 12);
$xmp            = simplexml_load_string($xmp_data);

只有两点:

  • XMP 大量使用 XML 命名空间,因此在使用某些 XML 工具解析 XMP 数据时必须注意这一点。
  • 考虑到图像文件的可能大小,您可能无法使用 file_get_contents() 因为此函数将整个图像加载到内存中。使用 fopen() 打开文件流资源并检查键序列的数据 block <x:xmpmeta</x:xmpmeta>将显着减少内存占用。

关于php - 如何使用 PHP 从 JPG 读取 XMP 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1578169/

相关文章:

image - 从字节数组验证 JPEG - 特别是 APP 段

javascript - 由选择框更新的 php session 变量显示/隐藏不同语言的 div

pdf - Puppeteer PDF 标题和作者(元数据)

java - 使用 gson 从 URL 动态加载 JSON 元数据

database - Schemaspy 与敏感数据一起使用是否安全?

java - 从 JPEG 图像读取数据

graphics - 成像问题: How to determine image quality?

javascript - 将多个值从js页面传递到php页面

php - 错误:未能找到建议检查集群运行状况的数据节点

php - Codeigniter 的 nginx 重写规则无法正常工作