【问题标题】:How do I add exif data to an image?如何将 exif 数据添加到图像中?
【发布时间】:2010-09-18 18:29:42
【问题描述】:
在我们的网站上,我们从各种来源上传了大量照片。
为了减小文件大小,我们使用mogrify从源中删除所有exif data:
mogrify -strip image.jpg
我们希望能够将一些基本的 exif 数据(版权 Initrode 等)重新插入到这个新的“干净”图像中,但我似乎在文档中找不到任何可以实现的东西这个。
有人有这方面的经验吗?
如果不能通过 imagemagick 完成,那么基于 PHP 的解决方案将是下一个最好的选择!
谢谢。
【问题讨论】:
标签:
php
image-processing
imagemagick
exif
【解决方案1】:
Exiftool 看起来很适合你。
我还没有尝试过,但我现在很想去修复我所有标记为 01/01/2074 的蜜月照片,因为我忘记在电池耗尽后重置日期。
【解决方案2】:
这是一个PHP Exif Library,应该可以满足您的需求。
PHP Exif 库 (PEL) 可让您
完全操纵 Exif(可交换
图像文件格式)数据。这是
数码相机放入的数据
他们的图像,例如日期和
时间、快门速度、ISO值等
开。
使用 PEL,可以完全修改
exif数据,意思是可以两者兼有
读和写。全新的 Exif
数据也可以添加到图像中。佩尔
完全用 PHP 编写,并且
除了标准,什么都不依赖
安装 PHP,版本 5。PEL 是
托管在 SourceForge 上。
【解决方案4】:
您可以节省大量空间,尤其是在您有大量图像的情况下..
将以下内容添加到 text.txt(IPTC 标签格式取自here):
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
【解决方案5】:
在 linux 上有一个叫做 jhead 的程序。它可以通过以下命令添加一个最小的 exif 标头:
jhead -mkexif img.jpg
【解决方案6】:
您可以使用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 的完整列表。