Комментарии 17
Ещё будет полезно писать в базу хэши md5 и периодически проверять не карапнулся ли файл
+1
если что-то разместил или написал не так
Да х… с оформлением. Но почему конфиг на php с жестко зашитым расположением вместо cli интерфейса?
packagist.org/?query=comman%20line%20parser
Ну и базу sqlite взять, чтобы более портабельно было.
0
Напомню, на всякий случай, о существовании www.sentex.net/~mwandel/jhead
0
На самом деле, когда уже написал, нашел несколько инструментов:
www.sno.phy.queensu.ca/~phil/exiftool — ExifTool
www.geckoandfly.com/7987/how-to-change-exif-data-date-and-camera-properties-with-free-editor
arslan.io/2018/04/18/tips-tricks-to-batch-edit-exif-metadata-of-photos
en.wikipedia.org/wiki/Comparison_of_digital_image_metadata_editors
Как обычно, сначала пишем код, потом неожиданно находятся десятки аналогов :)
www.sno.phy.queensu.ca/~phil/exiftool — ExifTool
www.geckoandfly.com/7987/how-to-change-exif-data-date-and-camera-properties-with-free-editor
arslan.io/2018/04/18/tips-tricks-to-batch-edit-exif-metadata-of-photos
en.wikipedia.org/wiki/Comparison_of_digital_image_metadata_editors
Как обычно, сначала пишем код, потом неожиданно находятся десятки аналогов :)
0
FastStone Image Viewer умеет раскидывать по дате из EXIF.
Проблемы начинаются когда обнаруживаешь что в фотках нет EXIF, или там стоит 1990 год, или фотки с нескольких устройств с одного мероприятия.
+2
или фотки с нескольких устройств с одного мероприятия.
И одно ещё в московском времени, а другое уже в берлинском
+1
Вы не поверите у меня такая структура уже 10 лет и я делаю это руками. Просто дисциплина. Автоматизация конечно хорошо — но проблема в том потом приходиться разгребать беспристрастные результаты алгоритма. Для полного счастья у меня камера и смена батарей сбрасывает время.
0
Это да, когда все сделано руками супер. Вопрос лишь в том, чтобы не забывать это делать день за днем, плюс фотографии с телефона, которые прилетают сразу по 1000 штук с разных локаций и дат и сортировать их руками очень не хочется.
0
У меня сначала фотки сбрасываются с аппарата и сортируются самодельным перловым скриптом, а затем уже я просматриваю, что получилось, переименовываю получившиеся папки, объединяя некоторые из них (если одно мероприятие длится больше одного дня). Под годы, месяцы и дни — отдельные папки (например, ~/photo/2019/10/04 — мне так удобнее, чем видеть в одном месте кучу папок за все дни)
0
Автор не столкнулся с корявыми датами в EXIF?
Во-первых хорошо бы брать DateTimeOriginal, ибо DateTime в EXIF часто не бывает
Во-вторых там частенько бывают кривые даты, формат которых зависит от производителей камер-телефонов-прошивки, что добавляет проблем, ниже функция нормализации, по крайней на тех 200к фото, которые у нас есть отработала все варианты. Фото совершенно из разных источников
Во-первых хорошо бы брать DateTimeOriginal, ибо DateTime в EXIF часто не бывает
Во-вторых там частенько бывают кривые даты, формат которых зависит от производителей камер-телефонов-прошивки, что добавляет проблем, ниже функция нормализации, по крайней на тех 200к фото, которые у нас есть отработала все варианты. Фото совершенно из разных источников
function normalizeExifDateTimeOriginal( $date ) {
$parsed = preg_replace('/\D+/', '#', $date);
$exploded = explode('#', $parsed);
$parts = array();
foreach ($exploded as $part) {
$parts[] = intval($part);
}
$counts = count($parts);
if ( $parts[1] > 12 ) {
$parts[1] = intval(substr($parts[1], 0, 2));
}
if ( $counts >= 3 ) {
switch ($counts) {
case 6:
$normalized = vsprintf("%04d-%02d-%02d %02d:%02d:%02d", $parts);
break;
case 5:
$normalized = vsprintf("%04d-%02d-%02d %02d:%02d:00", $parts);
break;
case 4:
$normalized = vsprintf("%04d-%02d-%02d %02d:00:00", $parts);
break;
case 3:
$normalized = vsprintf("%04d-%02d-%02d 00:00:00", $parts);
break;
default:
$normalized = vsprintf("%04d-%02d-%02d 00:00:00", $parts);
break;
}
} else {
$normalized = date('c');
}
return $normalized;
}
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Сортировка фотографий по данным из EXIF + PHP