如何将exif数据添加到图像?

在我们的网站上,我们从各种来源上传了大量的照片。

为了保持文件大小,我们使用mogrify从源文件中去除所有的exif数据 :

mogrify -strip image.jpg 

我们希望能够做的是插入一些基本的exif数据(版权Initrode等)回到这个新的“干净的”图像,但我似乎无法find任何文件,将实现这一目标。

有没有人有这样的经验?

如果不能通过imagemagick完成,基于PHP的解决scheme将是下一个最好的事情!

谢谢。

你可以节省大量的空间,特别是如果你有大量的图像..

将以下内容添加到text.txt(从这里取得的IPTC标记的格式):

 2#110#Credit="My Company" 2#05#Object Name="THE_OBJECT_NAME" 2#55#Date Created="2011-02-03 12:45" 2#80#By-line="BY-LINE?" 2#110#Credit="The CREDIT" 2#115#Source="SOURCE" 2#116#Copyright Notice="THE COPYRIGHT" 2#118#Contact="THE CONTACT" 2#120#Caption="AKA Title" 

从图像中删除所有现有的exif数据

 mogrify -strip image.jpg 

将信用添加到您的图像

 mogrify -profile 8BIMTEXT:text.txt image.jpg 

Exiftool看起来像是一个精确匹配你。

我还没有尝试过,但我现在很想去修复所有标记为01/01/2074的蜜月照片,因为我忘了在电池电量耗尽后重新设定date。

这是一个PHP Exif库 ,应该做你需要的。

PHP Exif库(PEL)可让您完全操作Exif(可交换图像文件格式)数据。 这是数码相机在其图像中放置的数据,如date和时间,快门速度,ISO值等。

使用PEL,可以完全修改Exif数据,这意味着它可以被读取和写入。 全新的Exif数据也可以添加到图像中。 PEL完全是用PHP编写的,除了标准安装的PHP版本5以外,什么也不做.PEL在SourceForge上托pipe。

在linux上有一个叫做jhead的程序。 它可以添加一个最小的exif头与命令:

jhead -mkexif img.jpg

我怀疑你会通过删除Exif信息获得大量的空间…

无论如何,我可能是错的,但Exif元数据更多的是存储技术(和上下文)的信息。 对于版权等内容,您应该使用IPTC。

显然,ImageMagick可以这样做:使用ImageMagick 将IPTC数据写入Jpeg 。

您可以使用PEL库直接在PHP中执行此操作。 你可以通过简单地覆盖现有的EXIF头文件来完成,

 // Load image data $data = new PelDataWindow(file_get_contents('IMAGE PATH')); // Prepare image data $jpeg = $file = new PelJpeg(); $jpeg->load($data); // Create new EXIF-headers, overwriting any existing ones (when writing to disk) $exif = new PelExif(); $jpeg->setExif($exif); $tiff = new PelTiff(); $exif->setTiff($tiff); // Create Ifd-data that will hold EXIF-tags $ifd0 = new PelIfd(PelIfd::IFD0); $tiff->setIfd($ifd0); // Create EXIF-data for copyright $make = new PelEntryAscii(PelTag::COPYRIGHT, '2008-2017 Conroy'); $ifd0->addEntry($make); // Add more EXIF-data... // Save to disk $file->saveFile('IMAGE.jpg'); 

您可以在PEL文档中find所有支持的EXIF数据(PelTag)的完整列表。