Дата съемки в фотоальбоме в двойке

InstantCMS 2.X
#1 16 января 2017 в 22:33
Помогите разобраться. Почему система на странице показа полноразмерной фотографии данные exif о фотокамере и технических характеристиках снимка (диафрагма, выдержка, фокус) выводит правильные, а в поле "дата съемки" всегда указывает время загрузки фотографии в фотоальбом сайта.

В самой фотографии exif-данные о дате и времени создании снимка отражаются правильные. Это баг системы или где-то я у себя накосячил?
#2 17 января 2017 в 08:33
Только что залил-проверил на последней версии InstantCMS у меня все норм показывает
#3 17 января 2017 в 23:36
Хм… От шаблона это может зависеть?
#4 18 января 2017 в 14:02
Может.
Надо смотреть файл шаблона controllers/photos/view.tpl.php
Ему передан массив с данными $photo_details
Если выводяь дату фото с него и она не верная, то проблема в другом месте,
а если выводят дату непонятно от куда — значит править тут и вывести дату с массива $photo_details
#5 26 января 2017 в 23:30
В общем такая ситуация. Я перед загрузкой фотографий, копирую их в отдельную папку для легкой обработки и после сохраняю уже в обработанном виде. Система в качестве даты съемки берет не сведения exif о дате съемки (они из фотографии никуда не деваются), а дату и время последнего сохранения файла. Пробовал грузить фотографии прямо с флэшки фотоаппарата, показывает все правильно — время создания снимка. Любое редактирование этой же фотографии — уже в поле дата съемки стоит новое время.

Выходит, система по факту берет не exif-данные, а данные о времени создания/изменения файла фотографии? Получается такая фигня, что на сайте с летними фотками юга стоят зимние даты, а на дневных, залитых солнцем — ночное время
#6 27 января 2017 в 00:21

Любое редактирование этой же фотографии — уже в поле дата съемки стоит новое время.

al955
У меня в легком редактировании при сохранение есть галка — не трогать дату, поэтому не сразу заметил проблему.


Причина в файле /system/libs/files.helper.php, где при вытягивании даты с файла в первую очередь смотрится DateTime и только если его нет — DateTimeOriginal

Можно и самому проверку поправить, но лучше расписать проблему на гитхабе, чтобы внесли правки в новую версию.
#7 27 января 2017 в 10:11
Как понимаю, это оно? Подскажите, что здесь поменять?

Time'])){
$exif_data['date'] = $exif['IFD0']['DateTime'];
} elseif(isset($exif['EXIF']['DateTimeOriginal'])){
$exif_data['date'] = $exif['EXIF']['DateTimeOriginal'];
} elseif(isset($exif['EXIF']['DateTimeDigitized'])){
$exif_data['date'] = $exif['EXIF']['DateTimeDigitized'];
}
#8 27 января 2017 в 10:22
Поменять местами условия чтобы вместо

  1. if(isset($exif['IFD0']['DateTime'])){
  2. $exif_data['date'] = $exif['IFD0']['DateTime'];
  3. } elseif(isset($exif['EXIF']['DateTimeOriginal'])){
  4. $exif_data['date'] = $exif['EXIF']['DateTimeOriginal'];
  5. } elseif(isset($exif['EXIF']['DateTimeDigitized'])){
  6. $exif_data['date'] = $exif['EXIF']['DateTimeDigitized'];
  7. }
стало

  1. if(isset($exif['EXIF']['DateTimeOriginal'])){
  2. $exif_data['date'] = $exif['EXIF']['DateTimeOriginal'];
  3. } elseif(isset($exif['EXIF']['DateTimeDigitized'])){
  4. $exif_data['date'] = $exif['EXIF']['DateTimeDigitized'];
  5. }elseif(isset($exif['IFD0']['DateTime'])){
  6. $exif_data['date'] = $exif['IFD0']['DateTime'];
  7. }
#9 27 января 2017 в 15:09
Спасибо за помощь. Все работает
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.