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

时间:2008-10-23 11:49:27

标签: php image-processing imagemagick exif

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

为了缩小文件大小,我们使用exif data从源中删除所有mogrify

mogrify -strip image.jpg

我们希望能够做的是将一些基本的exif数据(版权所有Initrode等)插回到这个新的“干净”图像中,但我似乎无法在文档中找到任何可以实现的内容此

有没有人有这方面的经验?

如果无法通过imagemagick完成,那么基于PHP的解决方案将成为下一个最佳选择!

感谢。

6 个答案:

答案 0 :(得分:13)

您可以节省大量空间,特别是如果您有大量图片..

将以下内容添加到text.txt(从here获取的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

答案 1 :(得分:12)

Exiftool看起来与您完全匹配。

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

答案 2 :(得分:6)

这是PHP Exif Library应该做你需要的。

  

PHP Exif Library(PEL)可以帮助你   完全操纵Exif(可交换   图像文件格式)数据。这是   数码相机所放置的数据   他们的形象,如日期和   时间,快门速度,ISO值等   上。

     

使用PEL,可以完全修改   Exif数据,意味着它可以是两者   读写。完全新的Exif   数据也可以添加到图像中。 PEL   完全用PHP编写   除了标准之外什么都不依赖   安装PHP,版本5. PEL是   在SourceForge上托管。

答案 3 :(得分:5)

Linux上有一个名为jhead的程序。它可以使用以下命令添加最小的exif标头:

jhead -mkexif img.jpg

答案 4 :(得分:1)

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

无论如何,我可能是错的,但Exif元数据更多地属于存储技术(和上下文)信息。对于像版权这样的东西,你应该使用IPTC。

显然,使用ImageMagick可以做到这一点:Write IPTC Data to Jpeg with ImageMagick

答案 5 :(得分:0)

您可以使用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');

您可以找到所有支持的EXIF数据(PelTag)in the PEL docs的完整列表。