在不保存文件的情况下向图像内容添加元数据在 PHP 中

问题描述

给定一个图像文件路径,我想获取它的内容——而不是向该内容添加元数据(EXIF、IPTC、XMP 等),然后显示该图像的内容,其中包含该元数据(可能是 base64 格式),在 HTML 标记不保存文件

为什么没有在服务器上保存文件?我尝试执行的操作是针对用户将图像文件保存到他的计算机的情况,出于版权目的 - 我希望他的 IP 和我网站的 URL 存储在他下载的图像的元数据中。 一分钟内将有成千上万的用户查看该图像,因此我无法在服务器上创建此图像的临时副本。

我可以生成 JPEG 或 PNG 格式的图像 - 使其工作所需的任何格式。

我目前知道如何使用 PHP 的“iptcembed”将 IPTC 元数据存储在 JPEG 图像中,但当然可以存储(保存)文件

解决方法

我知道你说你不能创建临时文件,但是有一个你自己手动删除的临时文件,还有一个 PHP 管理的临时文件。

看看tmplfile(),它允许您将文件保存在服务器上,但一旦请求完成,它将被清除。

然后你可以做所有你需要的事情,然后获取 tmpfile 的内容为 base64 并返回该内容。该文件随后将消失,因此每个请求或多或少都会在内存中发生。

,

我不知何故错过了 iptcembed 的第三个参数“spool”可以完成这项工作的事实:

线轴标志。如果假脱机标志小于 2,则 JPEG 将作为字符串返回。否则 JPEG 将被打印到 STDOUT。

我尝试了各种选项,它对我有用。