在我们的网站上,我们从各种来源上传了大量照片。
为了减小文件大小,我们使用mogrify从源中删除所有exif 数据:
mogrify -strip image.jpg
我们想要做的是将一些基本的 exif 数据(版权 Initrode 等)插入到这个新的“干净”图像中,但我似乎在文档中找不到任何可以实现这一点的东西。
有没有人有这样做的经验?
如果不能通过 imagemagick 完成,那么基于 PHP 的解决方案将是下一个最好的选择!
谢谢。
Exiftool看起来很适合您。
我还没有尝试过,但我现在很想去修复我所有标记为 01/01/2074 的蜜月照片,因为我忘记在电池耗尽后重置日期。
您可以节省大量空间,特别是如果您有大量图像。
将以下内容添加到 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
这是一个PHP Exif 库,应该可以满足您的需要。
PHP Exif 库 (PEL) 可让您完全操作 Exif(可交换图像文件格式)数据。这是数码相机在其图像中放置的数据,例如日期和时间、快门速度、ISO 值等。
使用 PEL,可以完全修改 Exif 数据,这意味着它可以读写。全新的 Exif 数据也可以添加到图像中。PEL 完全用 PHP 编写,除了 PHP 的标准安装,版本 5 之外什么都不依赖。PEL 托管在 SourceForge 上。
在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 文档中找到所有受支持的 EXIF 数据 (PelTag) 的完整列表。