На наш сайт загружается большое количество фотографий из разных источников.
Чтобы уменьшить размеры файлов, мы удаляем все данные exif из источника, используя могрифицировать:
mogrify -strip image.jpg
Что мы хотели бы сделать, так это вставить некоторые базовые данные exif (Copyright Initrode и т. д.) Обратно в этот новый «чистый» образ, но я не могу найти в документах ничего, что могло бы достичь этого.
Есть ли у кого-нибудь опыт этого?
Если это невозможно сделать с помощью imagemagick, лучшим решением будет решение на основе PHP!
Спасибо.






Exiftool похоже, что это будет точное совпадение для вас.
Я не пробовал, но теперь у меня возникает соблазн пойти и исправить все мои фотографии медового месяца, которые помечены 01/01/2074, потому что я забыл сбросить дату после того, как батареи разрядились.
Вот Библиотека PHP Exif, который должен делать то, что вам нужно.
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.
Эта ссылка теперь мертва.
Я сомневаюсь, что вы выиграете много места, удалив информацию Exif ...
В любом случае, я могу ошибаться, но метаданные Exif больше предназначены для хранения технической (и контекстной) информации. Для таких вещей, как авторское право, вам следует использовать IPTC.
Очевидно, это то, что вы можете сделать с ImageMagick: Запись данных IPTC в Jpeg с помощью ImageMagick.
Вы можете сэкономить много места, особенно если у вас много изображений.
Добавьте в 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
Кто знает синтаксис добавления тегов тем, обновите решение.
в linux есть программа под названием jhead. Он может добавить минимальный заголовок exif с помощью команды:
jhead -mkexif img.jpg
Вы можете сделать это прямо в 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.
Спасибо - лучший совет. Вытащил меня из ямы.