Как добавить данные EXIF ​​к изображению?

На нашем сайте мы получаем большое количество фотографий, загруженных из разных источников.

Чтобы уменьшить размеры файлов, мы удаляем все exif-данные из источника, используя mogrify:

mogrify -strip image.jpg

То, что мы хотели бы сделать, это вставить некоторые базовые данные exif (Copyright Initrode и т. Д.) Обратно в это новое "чистое" изображение, но я не могу найти ничего в документах, которые бы достигли этого.

Есть ли у кого-нибудь такой опыт?

Если это невозможно сделать с помощью imagemagick, лучшим решением будет решение на основе PHP!

Благодарю.

6 ответов

Решение

Вы можете сэкономить большое количество места, особенно если у вас есть большое количество изображений.

Добавьте следующее в 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, потому что я забыл сбросить дату после того, как батареи умерли.

Вот библиотека PHP Exif, которая должна делать то, что вам нужно.

PHP Exif Library (PEL) позволяет вам полностью манипулировать данными Exif (Exchangeable Image File Format). Это данные, которые цифровые камеры помещают в свои изображения, такие как дата и время, выдержка, значение ISO и т. Д.

Используя PEL, можно полностью изменить данные Exif, что означает, что они могут быть прочитаны и записаны. Абсолютно новые данные Exif также могут быть добавлены к изображениям. PEL полностью написан на PHP и не зависит ни от чего, кроме стандартной установки PHP версии 5. PEL размещается на SourceForge.

В Linux есть программа под названием jhead. Он может добавить минимальный заголовок exif с помощью команды:

jhead -mkexif img.jpg

Я сомневаюсь, что вы получите много места, удалив информацию Exif...

В любом случае, я могу ошибаться, но метаданные Exif больше предназначены для хранения технической (и контекстной) информации. Для таких вещей, как авторское право, вы должны использовать вместо IPTC.

Очевидно, это то, что вы можете сделать с помощью ImageMagick: записывать данные IPTC в Jpeg с помощью ImageMagick.

Вы можете сделать это прямо в PHP, используя библиотеку PEL. Вы бы сделали это, просто переписав существующие 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.

Другие вопросы по тегам