Исключительный скрипт Joomla Photogallery: извлеките дату создания из EXIF ​​(фото), чтобы показать на сайте

Не уверен, что это сработает, но так как Stackoverflow — лучшее место, чтобы спросить, здесь мы идем:

Я установил Joomla CMS, добавил настроенный шаблон, добавил (платную) фотогалерею, и после всевозможных настроек все работает довольно прилично.

Фотогалерея (компонент) работает в слоях. Вы откроете сайт и окажетесь в верхнем слое. Допустим, вы увидите 4 карты: 2012, 2013, 2014 и 2015. В этих главных категориях вы можете добавлять бесконечные подкатегории, и в конце концов, есть фотографии, отображаемые на отдельных страницах с изображениями.

Пример встроенных категорий:

-Главная (домашний сайт, в основном верхняя категория)

— 2015 (подкатегория)

— Январь (подкатегория подкатегории)

—— Image.jpg (отдельная страница с изображениями находится в подкатегории Январь)

Компонент фотогалереи состоит из огромного количества файлов (в основном PHP). Поскольку я не PHP-профессионал (но я знаю, как разбираться в мелочах), я попытался выяснить, как работает компонент фотогалереи, когда дело доходит до чтения данных EXIF ​​из его фотографий.

Идея состоит в том, чтобы извлечь дату, когда фотография была сделана из EXIF-извлечения, и отобразить ее на отдельных страницах с изображениями.

Из того, что я мог найти, данные EXIF ​​извлекаются с помощью этого PHP-файла «функций». Код-сегмент: http://pastebin.com/hT40vJnj

Затем есть PHP-файл для отдельных страниц изображений. Следующий код показывается под каждой фотографией, а на дисплее есть пара вещей. Автор, некоторые технические вещи (разрешение, тип файла и размер файла), а также есть значок наведения мыши, который показывает все извлеченные EXIF-данные в воздушном шаре. Даже дату, о которой я говорил, чтобы извлечь и быть в состоянии отбросить, куда я хочу: http://pastebin.com/RzbjkP4e

ИЗОБРАЖЕНИЕ: EXIF ​​Balloon (i.stack.imgur.com/S7Njc.png)

Следующая попытка (которая, вероятно, глупая), которую я уже попробовал, не сработала. Я просто попытался скопировать некоторый код из PHP-файла функций и попытался смешать его со следующим кодом в PHP-файле изображения:

echo '<i style="margin: 0 3px;cursor:default" class="icon-male dgtt-sw" title="'.JText::_('COM_DATSOGALLERY_EXIF_DATETIME').'"></i> '.strftime($ad_datef == 'customdate' ? $ad_datefc : $ad_datef, strtotime($exif_data['DateTimeOriginal'])).'<br />';
}

Я снова смешал некоторые функции PHP-кода с исходным кодом из PHP-файла изображения, как показано ниже (этот фрагмент кода показывает имя владельца фотографии на странице изображения)

echo '<i style="margin: 0 3px;cursor:default" class="icon-male dgtt-sw" title="'.JText::_('COM_DATSOGALLERY_INDIVIDUAL_AUTHOR').'"></i> '.$link.'<br />';
}

Есть ли какой-нибудь простой способ придумать строку / код, который я могу использовать, чтобы показать дату, когда была сделана фотография? Или мне нужно копать глубже?

Спасибо!

2

Решение

Проблема в том, что ваша функция ищет только DateTimeOriginal.
К сожалению, не всегда это поле предоставляется камерой.
Другие возможные поля, которые вы можете использовать вместо DateTimeOriginal:

  • Datetime
  • Выбранная дата
  • Дата изменена
  • Доли секунд времени

Чтобы проверить все поля, которые у вас есть, используйте var_dump ($ exif_data);

Поэтому, чтобы расширить текущее поведение, вы должны изменить свой php-файл EXIF, заменив оператор $ exif_data [‘DateTimeOriginal’] if (строки 28, 29, 30 в pastebin) следующим:

$date = '';
if (isset ($exif_data['DateTimeOriginal']) != '') {
$date = $exif_data['DateTimeOriginal'];
} elseif (isset ($exif_data['DateTimeDigitized']) != '') {
$date = $exif_data['DateTimeDigitized'];
} elseif (isset ($exif_data['DateTaken']) != '') {
$date = $exif_data['DateTaken'];
} elseif (isset ($exif_data['DateModified']) != '') {
$date = $exif_data['DateModified'];
} elseif (isset ($exif_data['Datetime']) != '') {
$date = $exif_data['Datetime'];
}

if ($date != '') {
$dg_exif .= JText::_('COM_DATSOGALLERY_EXIF_DATETIME').': <span>'. strftime($ad_datef == 'customdate' ? $ad_datefc : $ad_datef, strtotime($date)).'</span>';
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]