Imagick 不添加元数据 PHP

Imagick doesn't add metadata PHP

大家好,我在 php 中阅读了使用 imagick 的文档,我想将元数据添加到不包含元数据的图像中。所以我决定导入名为 image.png 的图像,添加元数据并重写名为 new.png

的图像

这是代码

$image = new Imagick("path/to/image/image.png");
$image->setImageProperty('Exif:Make', 'Imagick2');
$image->writeimage("path/to/image/app/new.png");
var_dump($image->getImageProperty('Exif:Make'));

我看到生成了新图像并且 var_dump() 显示:string(8) "Imagick2"

但是使用 http://metapicz.com/ 我没有得到元数据

是我的代码有问题还是网站不可靠?如何确定我插入了元数据?

提前致谢。

问题是您正在将 EXIF 数据写入 PNG 文件。大多数软件对 PNG 元数据的支持都很差,直到几年前(2016/17?)EXIF 数据还不是 PNG 规范的一部分。

ImageMagick(以及 ExifTool 和 Exiv2)有一种将 EXIF 数据嵌入 PNG 文件的非标准方式,但这些程序之外几乎没有其他软件支持它。 Exiftool 支持新标准,但我不确定其他两个是否支持。

我对您链接到的网站进行了快速测试,它根本无法读取 PNG 文件中的大部分元数据。我的测试文件有超过 1,400 个嵌入的元数据标签,metapicz.com 网站选择的唯一一个是 IPTC:CopyrightNotice.

您可以尝试 http://exif.regex.info 检查元数据。它在后端使用 ExifTool 并会提供更好的结果。