如何向图像添加 exif 数据?
在我们的网站上,我们收到从各种来源上传的大量照片。
为了减小文件大小,我们使用 exif 数据 从源中删除="http://www.imagemagick.org/www/mogrify.html" rel="noreferrer">mogrify:
mogrify -strip image.jpg
我们想要做的是插入一些基本的 exif 数据(版权所有 Ininode等)回到这个新的“干净”图像,但我似乎无法在文档中找到任何可以实现此目的的内容。
有人有这样做的经验吗?
如果不能通过 imagemagick 完成,那么基于 PHP 的解决方案将是下一个最好的选择!
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这是一个 PHP Exif 库,应该可以满足您的需求。
Here's a PHP Exif Library that should do what you need.
Linux 上有一个名为 jhead 的程序。 它可以使用以下命令添加最小的 exif 标头:
jhead -mkexif img.jpg
on linux there is a program called jhead. It can add a minimal exif header with the command:
jhead -mkexif img.jpg
我怀疑通过删除 Exif 信息您会获得大量空间...
无论如何,我可能是错的,但 Exif 元数据更多地属于存储技术(和上下文)信息。 对于版权之类的内容,您应该使用 IPTC。
显然,使用 ImageMagick 可以做到这一点: 使用 ImageMagick 将 IPTC 数据写入 Jpeg。
I doubt you will gain lot of space by removing Exif information...
Anyway, I can be wrong, but Exif metadata belongs more to store technical (and contextual) information. For stuff like copyright, you should use IPTC instead.
That's something you can do, apparently, with ImageMagick: Write IPTC Data to Jpeg with ImageMagick.
您可以使用 PEL 库直接在 PHP 中执行此操作。 您只需覆盖现有的 EXIF 标头即可完成此操作,
您可以找到所有受支持的 EXIF 数据 (PelTag) 的完整列表 PEL 文档。
You can do this directly in PHP using the PEL library. You would do this by simply overwriting the existing EXIF-headers,
You can find a complete list of all supported EXIF-data (PelTag) in the PEL docs.
您可以节省大量空间,尤其是在有大量图像的情况下。
将以下内容添加到 text.txt(IPTC 标签的格式取自 此处):
从图像中删除所有现有的 exif 数据
将信用添加到您的图像中
You can save a large amount of space, especially if you have a large number of images..
Add the following to text.txt (format of the IPTC tags taken from here):
Strip all existing exif data from the image
Add the credit to your image
Exiftool 看起来它与您完全匹配。
我还没有尝试过,但我现在很想去修复所有标记为 01/01/2074 的蜜月照片,因为我忘记在电池耗尽后重置日期。
Exiftool looks like it would be an exact match for you.
I haven't tried it but I'm now tempted to go and fix all my honeymoon photos which are marked 01/01/2074 because I forgot to reset the date after the batteries died.