如何向图像添加 exif 数据?

发布于 2024-07-07 23:23:26 字数 439 浏览 13 评论 0 原文

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

为了减小文件大小,我们使用 exif 数据 从源中删除="http://www.imagemagick.org/www/mogrify.html" rel="noreferrer">mogrify:

mogrify -strip image.jpg

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

有人有这样做的经验吗?

如果不能通过 imagemagick 完成,那么基于 PHP 的解决方案将是下一个最好的选择!

谢谢。

On our site, we get a large amount of photos uploaded from various sources.

In order to keep the file sizes down, we strip all exif data from the source using mogrify:

mogrify -strip image.jpg

What we'd like to be able to do is to insert some basic exif data (Copyright Initrode, etc) back onto this new "clean" image, but I can't seem to find anything in the docs that would achieve this.

Has anybody any experience of doing this?

If it can't be done through imagemagick, a PHP-based solution would be the next best thing!

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

蝶…霜飞 2024-07-14 23:23:27

这是一个 PHP Exif 库,应该可以满足您的需求。

PHP Exif 库 (PEL) 让您
完全操纵Exif(可交换
图像文件格式)数据。 这是
数码相机放置的数据
他们的图像,例如日期和
时间、快门速度、ISO值等
上。

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

Here's a PHP Exif Library that should do what you need.

The PHP Exif Library (PEL) lets you
fully manipulate Exif (Exchangeable
Image File Format) data. This is the
data that digital cameras place in
their images, such as the date and
time, shutter speed, ISO value and so
on.

Using PEL, one can fully modify the
Exif data, meaning that it can be both
read and written. Completely new Exif
data can also be added to images. PEL
is written completely in PHP and
depends on nothing except a standard
installation of PHP, version 5. PEL is
hosted on SourceForge.

看轻我的陪伴 2024-07-14 23:23:27

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

不顾 2024-07-14 23:23:27

我怀疑通过删除 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.

歌入人心 2024-07-14 23:23:27

您可以使用 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) 的完整列表 PEL 文档

You can do this directly in PHP using the PEL library. You would do this by simply overwriting the existing EXIF-headers,

// 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');

You can find a complete list of all supported EXIF-data (PelTag) in the PEL docs.

执着的年纪 2024-07-14 23:23:26

您可以节省大量空间,尤其是在有大量图像的情况下。

将以下内容添加到 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

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):

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"

Strip all existing exif data from the image

mogrify -strip image.jpg

Add the credit to your image

mogrify -profile 8BIMTEXT:text.txt image.jpg
太阳男子 2024-07-14 23:23:26

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文