微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用PHP在图像文件中添加关键字?

如何解决如何使用PHP在图像文件中添加关键字?

我尝试用这种方法添加关键字

//echoing the img to check the path
echo "<img src='uploads/Background597x1050px.jpg'>";

//creating the object and use of setimageProperty method to add keywords
$imgi = new Imagick('uploads/Background597x1050px.jpg');
$imgi->setimageProperty('keywords','test');

当我下载图片时,关键字部分什么也没有出现(法语截图)

enter image description here

编辑:我也尝试过 iptcembed 方法,但是 iptcparse 返回的标签只是那些,如果我从 windows 属性添加标签,它们不会返回,而是带有 {{仅 1}} 而不是 exif_read_data

解决方法

Imagick 不支持 comment 以外的属性。

https://github.com/ImageMagick/ImageMagick/issues/55

https://github.com/Imagick/imagick/issues/124

,

正如 Daniel W. 已经说过的,Imagick 仅支持 comment 图像的 JPEG 属性。

php.net 文档评论部分提到了这一点:https://www.php.net/manual/en/imagick.setimageproperty.php#123346

要为图像设置除 comment 以外的其他属性,您必须为图像使用其他文件类型,例如 PNG

,

因此,您不能使用 ImageMagick 来做您想做的事情,这很糟糕——但这并不意味着您没有选择。您有两个我能想到的处理 JPEG 图像中的 EXIF 和 ITPC 数据的方法:

  1. 使用旨在处理 EXIF 数据的第 3 方 PHP 库。我特别想到的一种叫做 Pel 并且支持 JPEG 和 TIFF 图像。从 what I have read 开始,使用起来可能很棘手,而且 documentation 很稀疏,但可能值得一试。

  2. 另一个选项叫做 ExifTool,这是一个方便的命令行实用程序,它实际上支持 EXIF、ITPC、XMP 等(不要让这个名字欺骗了你)。如果您将此 command line tool 添加到您的服务器,则您可以通过 PHP shell 类型命令调用它并以这种方式处理图像。请注意,如果图像是用户输入的,则必须非常小心地验证图像实际上是图像,exif 数据没有 payload injected,并尽最大努力尝试编写为尽可能安全的代码。一个 bit of code I found online 使用 exec() 调用 ExifTool,但也在构建调用时调用 escapeshellcommand() 来清理参数。我怀疑如果您进一步挖掘该代码,图像本身也会使用 getimagesize() 和其他技术等进行验证。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。