it-roy-ru.com

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

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

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

mogrify -strip image.jpg

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

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

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

Благодарю.

20
ConroyP

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

Добавьте следующее в 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
13
Ciaran

Exiftool похоже, это будет точное совпадение для вас.

Я не пробовал, но теперь я испытываю желание пойти и исправить все мои фотографии медового месяца, которые отмечены 01.01.2074, потому что я забыл сбросить дату после того, как батареи умерли.

12
Colin Pickard

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

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

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

6
mwilliams

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

jhead -mkexif img.jpg

5
Bastiaan

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

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

Это то, что вы можете сделать, по-видимому, с помощью ImageMagick: Записать данные IPTC в Jpeg с помощью ImageMagick .

1
PhiLho

Вы можете сделать это прямо в 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 .

0
Andreas Bergström