【问题标题】:Imagick doesn't add metadata PHPImagick 不添加元数据 PHP
【发布时间】:2020-07-07 00:19:23
【问题描述】:

大家好,我在 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/ 我没有元数据

我的代码是否存在问题或网站不可靠?如何确定我插入了元数据?

提前致谢。

【问题讨论】:

  • 请查看docs 上的评论。这取决于文件类型。
  • 我已经阅读了这个文档,我把类似的代码放在了顶部,但我不确定元数据没有被导入,因为使用 metapicz.com 我没有看到元数据被导入
  • 我提到了对文档的评论,而不是文档本身。
  • 感谢@MarkusZeller,这里是评论:“请注意,如果文件是 JPEG,则只有 'comment' 值写入文件。这意味着任何其他数据,例如 GPS 数据或 Exif 数据可以'修改',但不会写入文件。这可能会在未来改变,但在 2 年内不会改变。” .
  • 哦,这很有趣,我创建了一个用于读取 PNG 元数据的存储库,但我没有想到写入其中的可能性。 github.com/joserick/PNGMetadata

标签: php metadata imagick


【解决方案1】:

问题是您正在将 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,会提供更好的结果。

【讨论】:

  • 谢谢你,我用 exif 工具找到了我想要的东西:exiftool -PoseHeadingDegrees="0" myfile.jpg
猜你喜欢
  • 2021-05-15
  • 1970-01-01
  • 2016-11-15
  • 2023-03-09
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
相关资源
最近更新 更多