[英]How to add keywords in image file with 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');
编辑:我也尝试使用iptcembed
方法,但是iptcparse
返回的标签只是那些标签,如果我从 windows 属性添加标签,它们不会返回,但只有exif_read_data
而不是iptcembed
的
正如Daniel W.所说,Imagick 仅支持JPEG
图像的comment
属性。
这在 php.net 文档评论部分中提到: https://www.php.net/manual/en/imagick.setimageproperty.php#123346
要为图像设置comment
以外的其他属性,您必须为图像使用其他文件类型,例如PNG
。
所以,你不能使用 ImageMagick 来做你想做的事情,这很糟糕——但这并不意味着你没有选择。 在处理 JPEG 图像中的 EXIF 和 ITPC 数据时,我能想到的有两个:
使用设计用于处理 EXIF 数据的第 3 方 PHP 库。 我特别想到的一种叫做Pel ,它支持 JPEG 和 TIFF 图像。 从我读过的内容来看,使用起来可能会很棘手,并且文档很少,但可能值得一试。
另一个选项称为ExifTool ,这是一个方便的命令行实用程序,它实际上支持 EXIF、ITPC、XMP 等(不要让名称欺骗您)。 如果将此命令行工具添加到服务器,则可以通过 PHP shell 类型命令调用它并以这种方式处理图像。 请注意,如果图像是用户输入,您必须非常小心地验证图像实际上是图像,exif 数据没有 注入有效负载,并尽最大努力尝试编写安全代码可能的。 我在网上找到的一段代码使用exec()
调用 ExifTool,但在构建调用时也调用escapeshellcommand()
来清理 arguments。 我怀疑如果您进一步深入研究该代码,图像本身也会使用getimagesize()
和其他技术进行验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.