Как добавить данные EXIF ​​к изображению? - PullRequest
20 голосов
/ 23 октября 2008

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

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

mogrify -strip image.jpg

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

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

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

Спасибо.

Ответы [ 6 ]

13 голосов
/ 23 октября 2008

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

Добавьте следующее в 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
12 голосов
/ 23 октября 2008

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

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

6 голосов
/ 23 октября 2008

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

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

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

5 голосов
/ 08 января 2010

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

jhead -mkexif img.jpg

1 голос
/ 23 октября 2008

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

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

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

0 голосов
/ 12 сентября 2017

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

...