Перечитывание данных EXIF в Gallery3

Иной раз возникает «разночтение» между параметрами EXIF в реальных файлах со снимками и в базе данных Gallery3. У меня, например, по каким-то невыясненным причинам время съемки в базе данных отличалось от EXIF CreateDate на целое число часов. Это оказалось очень неудобным в случае упорядочения снимков в альбомах по дате создания, если снимки в альбом добавлялись в разное время. Т. е. для одних снимков в базе содержались корректные данные, для других — ошибочные.

Возможна и другая ситуация — замена некоторых файлов со снимками путем «прямого копирования», а не удаления и загрузки новых средствами Gallery3.

В любом случае, хотелось найти в той или иной степени автоматизированное решение для корректировки данных EXIF в БД Gallery3.  Функция «Извлечь Exif данные» проблему не решала, поскольку Gallery3 не видит «обновления» файлов или несоответствия данных в базе и реальных снимках. Значит нужно найти способ сказать программе, что данные нужно обновить. После непродолжительных раскопок выяснилось, что флагом несоответствия БД и EXIF является поле dirty в таблице prefix_exif_records (вместо prefix в вашей базе данных будет использоваться заданный при установке системы префикс). Если устновить для нужной строки (снимка) в этом поле значение 1, программа увидит несоответствие и операция «Извлечь Exif данные» будет реально выполнена для нужного снимка с корректировкой записей в базе данных.

В моем случае было не очевидно для каких снимков  дата съемки указана ошибочно, поэтому я просто объявил некорректными все записи с помощью SQL-запроса

UPDATE `prefix_exif_records` set dirty=1 where `item_id` like "%"

В результате программа сочла все 6772 снимка имеющими в базе некорректные данные и согласилась обновить их. Операция заняла лишь несколько минут и теперь все снимки соответствовали содержимому базы данных.

 

Добавить комментарий