1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

На заметку Linux'оидам. Статистика из коллекции фото.

Тема в разделе "Другие программы", создана пользователем Wizard, 22 фев 2014.

Метки:
  1. #1 22 фев 2014 в 21:15 | На заметку Linux'оидам. Статистика из коллекции фото.
    Последнее редактирование модератором: 22 фев 2014
    В одной из тем увидел у виндузятников интересную программулину, собирающую из EXIF информацию по фокусным с графиком. Да и сам призадумался посмотреть, какие же у меня фокусные самые ходовые.

    Первая мысль была использовать exiftool — запросто можно выбрать информацию по любым EXIF-тегам, но считать-группировать нужно чем-то ещё... Вот бы, думаю, как в SQL — «group by» и все дела. SQL... Это следующая идея - SQL.

    Ведь все фотки я скармиливаю в digiKam (и Вам весьма его рекомендую!), а он свою базу держит в обычном sqlite. А вот какую именно информацию о фотках он там хранит и предстояло выяснить. Ну и выяснил — среди всего прочего хранит и фокусное расстояние!

    Итак, рецепт успеха!

    Ингридиенты: БД digiKam, клиент sqlite3 и пара SQL-запросов.

    Начнём, пожалуй… Запускаем клиента sqlite3 с указанием пути до БД digiKam (путь можно подсмотреть в самом digiKam в меню «Настройка» → «Настроить digiKam», раздел «Базы данных»):
    Код:
    sqlite3 /путь/к/файлу/digikam4.db
    Смотрим список альбомов:
    Код:
    select id,relativePath from Albums order by id;
    Я никак дополнительно не именую альбомы, да и лежат они все в одном подкаталоге, поэтому подобного запроса достаточно. В выводе запроса нас интересует id (первая колонка), соответствующий конкретному альбому. Запомним.
    Дальше смотрим готовую сводку по фокусным для альбома:
    Код:
    select count(m.imageid),m.focalLength from ImageMetadata m, Images i where i.id=m.imageid and i.album=216 group by m.focalLength order by m.focalLength;
    Запомненный id альбома подставляем в i.album (вместо моего 216).

    Вот пример для свадьбы, где я был с kit'ом и фиксом 85/2,8:
    Код:
    72|18.0
    6|20.0
    19|22.0
    19|24.0
    13|26.0
    9|28.0
    19|30.0
    37|35.0
    13|40.0
    5|45.0
    22|50.0
    21|55.0
    4|85.0
    (Аж сам удивился, что всё-таки успел что-то на 85/2,8 снять при том, что прогулку я прогулял...)
     
  2. А что за программа под винду не подскажете? Было бы интересно у себя такой анализ по свадебным фотосессиям провести))
     
  3. #4 24 фев 2014 в 14:48 | На заметку Linux'оидам. Статистика из коллекции фото.
    Последнее редактирование модератором: 24 фев 2014
    Wizard, мысли по этому поводу такие.

    1. Хорошо бы это всё в шелл-скрипт оформить и передавать при его вызове туда двумя параметрами ID альбома и путь к базе sqlite3. Можно даже объединить этот скрипт с другим скриптом, тогда с флагом -showid можно будет просматривать ID альбомов, выбирать нужный и использовать его как параметр в скрипте.

    2. Рецепт на сам деле универсальный для Винды и Яблока. Lightroom держит свою базу фотоснимков в том же самом открытом формате sqlite3, только название записей, вероятно, где-то будет отличаться. Кроме того, не знаю как в последних версиях, но начиная с Mac OS X 10.5, sqlite3 встроенный в системе уже есть, нужен только клиент для базы. Непосредственно инфу из камерных jpeg и raw на Маке метаданные можно получить с помощью штатной консольной утилиты mdls (см. man mdls). Дальше заскриптовать это с sed или perl-скриптом, тут возможны варианты.
     
  4. интересно стало. Постараюсь вечером глянуть свою коллекцию. Хотя диджикамом не пользуюсь
     
  5. Зря. Весьма рекомендую.

    Умеет RAW, имеет простенький редактор (кадрировать, повернуть, поправить цвет) и заявлено распознавание лиц, но я это распознавание так и не победил. Ещё, например, однажды пригодился выбор фото/альбомов по календарю.

    Т.е., насколько я понимаю, некий аналог Lightroom (последний не видел).
     
  6. Я думал об этом, но просто и красиво не получится. Всё равно ведь делать два подхода - определять ID и собирать статистику. С учётом того, что альбомов несколько сотен и это не предел, простыня будет недетская. И всё равно нужно делать второй запрос с указание выбранного ID. Тут либо делать отдельный гуй с птичками для альбомов, или, что идеологически более верно, плагин для digiKam. Для обоих вариантов нужно обладать программерскими навыками поболее, чем shell.
    Т.е. это так — раз посмотреть. Впрочем, можно и shell-скрипт сочинить, но по-моему, удобства он не сильно добавит.

    Винда и мак не интересны, извините.
     
  7. Это да. ((

    А по-любому, вопрос с используемыми ФР волнует в состоянии неопределённости, а оно рано или поздно проходит.
     
  8. Таки навелосипедил скриптец. Не вполне универсальный (захардкожен путь к конфигу digiKam и имя клиента sqlite3), но кому надо, думаю, сумеет поправить.
    Код:
    #!/bin/sh
    
    DK_CONF="${HOME}/.kde4/share/config/digikamrc"
    
    eval `awk '/Database Name=/ {printf "DB%s/digikam4.db", $2}' ${DK_CONF}`
    
    if [ $# -eq 1 ]
    then
      QUERY="select count(m.imageid), m.focalLength from ImageMetadata m, Images i where i.id=m.imageid and i.album=${1} group by m.focalLength order by m.focalLength"
    else
      QUERY="select id, relativePath from Albums order by id"
    fi
    
    sqlite3 ${DBName} "${QUERY}"
    
    Скрипт сам находит путь к БД digiKam (с оговоркой выше). При вызове без параметров выкатывает список альбомов. При вызове с параметром он, параметр, считается идентификатором альбома и, соответсвенно, для указанного альбома выкатывается статистика.
     

Поделиться этой страницей