Как читать ключевые слова Lightroom из файла изображения с помощью PHP?

У меня есть фотосообщество (www.jungledragon.com), которое позволяет пользователям загружать фотографии. Моя платформа — PHP/CodeIgniter.

В рамках процесса загрузки я уже читаю информацию EXIF ​​с помощью PHP-функции exif_read_data, которая отлично работает. Я читаю информацию о камере и показываю ее на вкладке информации.

Кроме того, ожидается, что пользователь вручную установит название фотографии, описание и теги на веб-сайте после загрузки фотографии. Однако некоторые пользователи управляют этими полями в своей программе управления изображениями, например Lightroom. Было бы здорово, если бы я тоже мог читать их, загрузка стала бы полной радостью.

Я уже улучшил свое чтение EXIF, чтобы читать «заголовок», таким образом пользователям больше не нужно устанавливать заголовок изображения после загрузки. Теперь я ищу, чтобы прочитать ключевые слова, где я застрял. Вот частичный скриншот изображения в Lightroom:

введите здесь описание изображения

Я могу прочитать метаданные, но как мне прочитать ключевые слова? Тот факт, что это не внутри метаданных, заставляет меня задуматься, возможно ли это вообще? Я пытался прочитать каждое значение, которое я могу получить (ANY_TAG, IFD0, EXIF, APP12), используя exif_read_data, но ключевые слова не найдены.

Есть какие-нибудь мысли?


person Fer    schedule 13.08.2011    source источник
comment
Я думаю, вам следует проверить изображения с помощью какого-либо другого программного обеспечения, чтобы исключить любые ограничения в чтении метаданных php. Кроме того, как настроен LR для экспорта ключевых слов? см. напр. lightroomsecrets.com/2010/11/keywords-and-exported-images   -  person Anders Forsgren    schedule 14.08.2011
comment
Спасибо. На самом деле я загрузил фотографию, которую один пользователь загрузил на мой сайт, и, как он утверждал, у нее есть ключевые слова. Скриншот, который я включил, показывает ту же фотографию, импортированную в LR. Я думаю, что проверяет, что файл содержит его?   -  person Fer    schedule 14.08.2011
comment
Привет, Ферди. Это уже старый пост. Была ли проблема когда-либо решена? Я также хочу сохранить ключевые слова из LR, а также кучу других значений метаданных. Многие образцы кода, которые я видел, предполагают чтение массива APP13, но, похоже, в моих тестовых изображениях этого нет.   -  person M61Vulcan    schedule 24.05.2019
comment
@ M61Vulcan Прокрутите вниз, там есть ответ.   -  person Fer    schedule 25.05.2019
comment
Спасибо за ваш быстрый ответ на эту старую тему. Ссылка на foto.biz больше недействительна, и объяснение iptcparse php.net продолжает ссылаться на «APP13», которого у меня нет в моих метаданных. Я нашел ключевые слова вместе с заголовком и подписью Lightroom в IFD0.ExtensibleMetadataPlatform: как большую длинную неформатированную строку (около 266 символов в зависимости от изображения), но когда я пытаюсь разрезать строку, она становится 12 917 символов с кучей других метаданных в Это. Предположительно, где-то есть какой-то скрытый персонаж. В любом случае это выходит за рамки этого вопроса. Я вернусь к этому.   -  person M61Vulcan    schedule 26.05.2019


Ответы (3)


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

http://www.foto-biz.com/Lightroom/Exif-vs-iptc-vs-xmp

Ключевые слова изображения могут храниться в IPTC, а не в EXIF. Я не знаю, есть ли стандартный метод платформы для чтения iptc, но быстрый google показывает это

http://php.net/manual/en/function.iptcparse.php

person Anders Forsgren    schedule 13.08.2011
comment
Спасибо, очень полезно. Попробую это и скоро сообщу. - person Fer; 15.08.2011
comment
Это работает :) Официальный пример функции iptcparse дал мне нужные мне результаты мгновенно. Спасибо большое! - person Fer; 15.08.2011

Попробуйте использовать PEL, гораздо более полную библиотеку, чем exif_read_data() для данных exif.

person r0nny1l    schedule 13.08.2011
comment
Спасибо за предложение, но можно ли установить PEL без командной строки? Причина, по которой я спрашиваю, из-за моего хозяина. - person Fer; 14.08.2011
comment
У меня была та же проблема, поэтому я просто скачал исходный код и загрузил его куда-нибудь на свой сервер. - person r0nny1l; 14.08.2011

После долгих исследований я нашел решение для экспорта ключевых слов в Lightroom в файл jpg:

$image = getimagesize($imagepath, $info);
if(isset($info['APP13']))
{
    $iptc = iptcparse($info['APP13']);
    $keywordcount = count($iptc["2#025"]);
    for ($i=0; $i<$keywordcount; $i++)
    { 
        echo "keyword : " . $iptc["2#025"][$i] . "<br/>";
    }
}
person Laurent    schedule 23.03.2018