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

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

для того чтобы держать размеры файла вниз, мы обнажаем все данные exif из источника с помощью однако существует:

mogrify -strip image.jpg

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

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

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

спасибо.

6 ответов


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

добавьте в текст следующее.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 (PEL) позволяет полно манипулируйте Exif (Exchangeable Формат файла изображения) данные. Это данные, которые цифровые камеры помещают в их изображения, такие как дата и время, выдержка затвора, значение ISO и так далее на.

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


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

jhead-mkexif img.формат JPG


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

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

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


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