Сортировка фото по дате съемки

Предыстория:Лет 5 - 10 тому назад я решил разложить свою коллекцию фото по годам и
  1. Оффлайн

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Мастер

    Сообщений: 276

    Создано тем: 52

    Рейтинг: 5

    Репа: (61|61|0)

    Баллы: 1771

    Был: 2024-04-25 21:42

    Лайков: 86


    Предыстория:
    Лет 5 - 10 тому назад я решил разложить свою коллекцию фото по годам и месяцам съемки, однако обнаружил, что некоторые даты съемки абсолютно не соответствуют реальности. Например, на фотографии явное жаркое лето, а дата съемки указывает на холодную зиму. Вероятно перед съемкой не настроили камеру или забыли настроить после смены батареек.
    Так или иначе, но нужно отказаться от сортировки по годам или изменить дату съемки. изменить дату съемки одной фотографии легко, но когда их несколько десятков или, даже, сотни, то проблематично  :o
    Поискал соответствующую программу в интернете - не нашел, тех, что раскладывают по годам много, а вот изменить дату множества фотографий нет (или не нашел)
    Тогда я "быстренько" написал несколько программ, которые совместными усилиями справились с этой работой. Программы практически не имели интерфейса, все необходимые данные я вводил непосредственно в код программы.
    Сейчас, не то чтобы возникла острая необходимость, а скорее чтобы развеется от тоски и печали, я решил собрать все эти программы в кучку, под единым интерфейсом. (почти, как в песенке "Я его слепила из того, что было...")
    Ну вот, теперь, "то что получила" и выкладываю.



    Собственно из предыстории понятно назначение программы. Там добавлено еще несколько опций.
    Понятно, что программа "сырая", но на основе вашей критики, замечаний, а главное на основе предложений и советов, возможно мне удастся программу "подсушить"
    Это версия 1.1. По предложению пользователя добавлена возможность перемещения дубликатов и исправлено несколько обнаруженных ошибок
    Скачать, как всегда, можно с моего яндекс-диска
    pp0312, 1234, trofimovnikolai нравится это сообщение.
    Сообщение отредактировал NNK_RTR 16 сентября 2019 - 12:24
    3 сентября 2019 - 17:29 / #1
  2. Оффлайн

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2178

    Создано тем: 315

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3400

    Был: 2024-04-08 16:00

    Лайков: 196

    Цитата: NNK_RTR
    Администраторам: здесь должен быть скриншот программы, но как его загрузить?. попробовал добавить в вложения - не принимает. Что за аббревиатуры "SEO", "BBC", как добавить сообщение на главную страницу? Что за параметр "Объявление темы"? Неплохо бы написать статью для тупых (или для тупого, если я один такой).



    Все будет, пока вылавливаю ошибки конвертации - форумов то было много, это юкоз, логик и булет, а у каждого свой код HTML.
    На форум загружать очень просто - открываете внизу Вложения и другие параметры и там Добавить файлы.
    Дальше Загрузка,  мышом клацаете где хотите видеть картинку и жмете Вставить  ;)



    Да, раздел есть такой - Практическая фотография и не только
    Сообщение отредактировал 3 сентября 2019 - 21:41

    3 сентября 2019 - 21:28 / #2
  3. Оффлайн

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

    Приветствую!

    В окне настроек какое-то "подвешенное" положение кнопки "Выбор". Обычно кнопку выбора пути размещают напротив поля редактирования/ввода пути. У вас она живет отдельной жизнью, может быть вы так и задумали, но как-то это небрежно смотрится. И там же в этом окне досадная опечатка — "фотогафии".

    Скрин 1


    Еще режет глаз строка "Не известный тип камеры". Правильно будет "Неизвестный тип камеры".

    Пункт действий "Изменить дату съемки" получился очень мудрёный и сложный для понимания стороннего пользователя. Ситуацию не прояснила даже справка. Введено понятие "смещение"?! Зачем такой подробный выбор элементов даты?! Почему вы не использовали стандартные компоненты "TDateTimePicker" или "TMonthCalendar"?

    Скрин 2


    Было бы нагляднее и намного понятнее! Если очень нужно точное время, то и тут можно использовать соответствующий компонент.

    Следующий момент. Не давайте именам папок и файлов (в том числе с настройками и вспомогательными данными) на русском (кириллице). На системах с отличным от русского системным языком, ваша программа превратится в "кирпич" или же будет работать некорректно. Также для файла настроек необязательно создавать отдельную папку, это лишнее.

    Изображения в справке абсолютно не оптимизированы. Я обратил на это внимание еще по вашему документу "Начинающему борцу с крякозяюликами", размер которого составил аж 80Мб. Сперва подумал, что в документ встроены архивы с инструментами, которые описаны в статье, что было бы логично. Но оказалось, что там лежат изображения с размерами файлов под 800Кб каждое! Любая программа по оптимизации легко уменьшит размер таких изображений в 10-15 раз без ущерба качеству. Такая же ситуация обстоит с этим фалом справки. Вот смотрите, я провел оптимизацию изображений в программе RIOT (все изображения JPG заменил на PNG) и собрал справку заново. Размер вашего файла справки составляет 2046 Кб. Размер нового файла справки — 364 Кб. Да, можно возразить, что сейчас размеры не актуальны в век широкополосного интернета.

    Ещё по изображениям. Как-то сделаны они небрежно: то кромка окна обрезана, то просматриваются области за границей окна. Впечатление, что вы делали захват рабочего стола, а потом в графическом редакторе вырезали окно программы как получится. Ну и получилось неряшливо.

    Текст справки представляет собой "простыню". Не сделаны абзацы, отступы, не расставлены акценты. Такой текст тяжело читать, тем более воспринимать и вычленять важную информацию. Глаза быстро устают от постоянного "спотыкания". К сожалению, так же оформлен документ "Начинающему борцу с крякозяюликами". Информация там намного сложнее, но из-за небрежного оформления становится вообще недоступной для понимания. Попробуйте при чтении прерваться, отвернуться от монитора, посмотреть в окно, а потом вернуться к чтению документа. Легко ли Вам будет в таком "сплошном" тексте отыскать взглядом место, где вы прервались, чтобы продолжить чтение? Просто сравните ниже два текста из вашей справки: слева ваш, а справа отформатированный.

    Скрин 3


    Какой текст легче для восприятия?
    NNK_RTR нравится это сообщение.
    19 сентября 2019 - 16:48 / #3
  4. Оффлайн

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Мастер

    Сообщений: 276

    Создано тем: 52

    Рейтинг: 5

    Репа: (61|61|0)

    Баллы: 1771

    Был: 2024-04-25 21:42

    Лайков: 86

    Спасибо за конструктивную критику!
    Первые три пункта - это безоговорочный ляп!

    По дизайну страницы "Изменить дату съемки".
    На момент проектирования я не хотел изменять размер панели страниц.
    Пробовал использовать компонент "TDateTimePicker", но мне показалось, что извлеченная и реальная даты съемки должны располагаться рядом, чтобы пользователь явно видел разницу. То есть, мне все равно нужно два компонента TEdit или TLabel или что-то подобное, тогда и было принято решение использовать 6 компонентов TLabel для извлеченной даты и 6 компонентов SpinEdit для реальной даты. Мне и сейчас думается, что так удобней.

    По поводу понятия "Смещение", я просто не знаю, как обойтись без него. Программа изменяет дату съемки не одной фотографии, а некоторой группы. При этом к дате съемки каждой фотографии прибавляется одинаковое, рассчитанное на введенных данных смещение. Возможно не нужно отображать смещение и результат проверки, тогда станут лишними и две кнопки. Сначала я хотел даже проверять это дело автоматически и только в случае ошибки выводить эти значения в отдельном окне и в нем позволять пользователю корректировать смещение. Тем более, при тестировании ошибка появлялась только, если в промежуток входило несколько високосных лет. Но потом решил, что пусть будет так.

    Со справкой все намного сложнее. Нет, абзацы это правильно и не очень сложно, а вот написать действительно информативную и легкую для понимания справку - это целая наука или дар. У меня нет ни того ни другого. Получается или коротко и непонятно, или длинно и занудно, и все равно, непонятно

    Я конечно постараюсь изменить дизайн приложения на основе Ваших, а может быть и не только Ваших, замечаний в новой версии программы, если она будет. Разумеется, учту Ваши советы при написании справки.
    Хотелось бы услышать критику, замечания и пожелания от пользователей, реально использующих эту программу.

    Еще раз спасибо. Вы не поленились и даже специально создали форму, чтобы наглядно предложить свой вариант.

    С уважением, Николай
    trofimovnikolai нравится это сообщение.
    19 сентября 2019 - 19:02 / #4
  5. Оффлайн

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

    Здравствуйте.

    Не поймите меня неправильно. Но все же...
    Перечитал еще раз несколько раз раздел справки касательно "Изменить дату съемки" и... никак не могу понять ваш ход мыслей. bang

    idea
    Я вижу это все проще. Выбрал папку с фотками, выбрал дату - готово. Нажал выполнить и в выбранной папке для всех фотографий, без всяких смещений и условий, дата была изменена на выбранную. Время и все остальное лишнее. Если отметка времени обязательна, то по умолчанию использовать, например, время 12:00:00. Главное дата. Обычно, просматривая фотографии, люди вспоминают, что то или иное события происходило в определенный период, без точной даты и тем более точного времени.

    Вы пишите, что "Если в Вашей коллекции есть несколько групп фотографий, дату съемки которых нужно изменить на разное время, то разные группы нужно переместить в разные папки.". Хорошо. Предварительно рассортировали фотки по папкам. Потом в настройках добавили эти папки в список исходных папок. Тогда в разделе "Изменить дату съемки" просто предложить пользователю из выпадающего списка выбрать папку обработки, указать для неё дату и сохранить (в том же файле настроек, например). После запустить процесс обработки, нажав "Выполнить". Примерно так:

    Вариант 1 (макет)


    Выбор папок из списка (компонент должен их считывать из списка исходных папок):


    Если параметр времени важен, как я уже говорил, то используйте простой и понятный пользователю компонент выбора времени.

    Вариант 2 (макет)


    Но ещё раз повторю, на мой взгляд, опция времени лишняя.

    С наилучшими пожеланиями.
    20 сентября 2019 - 02:37 / #5
  6. Оффлайн

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Мастер

    Сообщений: 276

    Создано тем: 52

    Рейтинг: 5

    Репа: (61|61|0)

    Баллы: 1771

    Был: 2024-04-25 21:42

    Лайков: 86

    Совсем я не могу писать справки, если даже не смог передать основную "фишку" программы.
    Попробую здесь:

    Когда-то я подарил дочке фотокамеру и поставил задачу фотографировать внучку как можно чаще и во всех ракурсах. Со временем у меня собралась куча фотографий, которые я решил разложить по годам и месяцам съемки. В то время (2005) готовых программ было не очень много, а про Интернет я только слышал. Была написана программа (еще на Паскале), которая справилась с этой работой. Просматривая результат я увидел, что дата съемки явно не соответствует реальной. Передо мной стала задача изменить дату съемки, но так, чтобы сама последовательность съемки осталась. Камера имела свойство сбрасывать настройки при каждой смене батареек. Последовательность в новой сессии (после смены батареек) начиналась с некоторой, почему-то случайной даты.

    Теперь ГЛАВНОЕ:
    Мне нужно сохранить последовательность в сессии, но сдвинуть начало сессии (сдвинуть точку отсчета во всех фотографиях сессии - изменить дату всех фотографий в группе на одинаковое смещение).
    Допустим, что 7 июня у нее день рождения, ее поздравляют и дарят велосипед, 12 июля она с него упала, чтобы не получилось, что сначала она упала, а потом этот велосипед дарят.
    Кроме того, случалось, что в течении минуты делалось несколько снимков, например, как она надувает щечки и гасит свечи в торте. Здесь важно учитывать и секунды.

    Видите, что получилось. Длинно. Для объяснения использовался реальный пример. Может такой способ пояснения неправильный, но по моему суть задачи я передал. Или опять туманно?
    Предложенный Вами вариант конечно проще, в нем не надо даже изменять exif-теги, достаточно просто переименовать фотографии, но в нем совершенно теряется последовательность съемки и с поставленной задачей не справляется.
    Здесь тоже, можно было бы не изменять саму дату съемки, а только задать соответствующее имя файлу, но функция "Сортировать по дате съемки" работает не с именами файлов, а с датой съемки. То есть, извлекает дату съемки, задает имя файла, соответствующее дате съемки и помещает файл в соответствующую папку.

    По скриншотам:
    Я пользуюсь программой Bandicam. Она мне очень нравиться именно тем, что не нужно настраивать область экрана, выделять нужное мышкой, достаточно один раз настроить рамку вокруг нужного окна и нажимать F11. Но Bandicam почему-то считает нужным включать в скриншот и саму рамку. Какой программой пользуетесь Вы?
    Спасибо, подсказали программу "Riot".

    С уважением, Николай
    20 сентября 2019 - 11:22 / #6
  7. Оффлайн

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Мастер

    Сообщений: 276

    Создано тем: 52

    Рейтинг: 5

    Репа: (61|61|0)

    Баллы: 1771

    Был: 2024-04-25 21:42

    Лайков: 86

    Дополнение.

    Существует несколько фотографий, снятых:
    2010.07.24.17.58.33, 2011.02.07.06.59.16,... 2011.02.19.10.10.12
    (дата в порядке год.месяц.число.час.минута.секунда)
    Выясняется, что дата съемки не соответствует реальной.
    Выбираем одну из этих фотографий в качестве образца.
    Собираем семейный совет и устанавливаем близкую к реальной дату съемки.
    Допустим в качестве образца была выбрана вторая фотография и выяснено,
    Что фото на самом деле было снято 2012.08.03.16.59.16
    (минуты и секунды не помним, но дату точно, а час съемки - приблизительно)
    Вводим эту дату в соответствующие поля и щелкаем по кнопке "Подсчитать"
    Программа вычисляет разницу между реальной (установленной нами) и извлеченной из фотографии даты.
    Разница вычисляется в секундах и называется смещением. Получилось 46951200 секунд
    Щелкаем по кнопке "Проверить". Результат проверки должен соответствовать введенной нами дате, если это не так, то можно вручную изменить смещение и снова щелкнуть по кнопке "Проверить"
    У нас все совпало. Щелкаем по кнопке "Выполнить"
    В следующем окне оставляем поля пустыми и щелкаем по кнопке "ОК"
    В окне "Выбор исходных и целевой папок" щелкаем по кнопке "Готово" и дожидаемся выполнения операции.
    Открываем целевую папку и смотрим:
    Первый файл 2012.01.18.03.58.33_1 - перескочил на целых 2 года, но мы и добавляли полтора года. Все правильно. Открываем фото в средстве просмотра. Да, действительно, так и есть. Видно попались хорошие батарейки...
    Вторая - 2012.08.02.16.59.16_2 - то, что мы заказывали
    Последняя - 2012.08.14.20.10.12_7 - соответствует

    Дальше, когда мы будем сортировать по дате съемки, эти фотографии будут помещены в правильные папки (при этом, сама последовательность съемки, не изменится.

    Вот, как-то так.
    20 сентября 2019 - 14:43 / #7
  8. Оффлайн

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

    Цитата: NNK_RTR
    Теперь ГЛАВНОЕ


    Ну все ясно! beer
    Вы просто корректируете дату съёмки. Тогда нужно опцию обозвать "Коррекция даты съёмки". Но и это ещё не всё. Если важно сохранить время (часы, минуты, сек.), то зачем эти параметры показывать пользователю? Меняйте только дату, а время не трогайте. Тогда очерёдность съемки фотографий в сессии не изменится. Или я снова не так понял? yes

    По скриншотам:
    Я использую программу Greenshot. Правда программа давно не обновлялась, но работает замечательно. Благо исходники открыты, что позволило внести небольшие правки в код и скомпилировать программу под себя. Есть ещё задумки расширения функциональности инструментов, но то работа, то семья, и отдохнуть надо, в общем отложил в долгий ящик.

    Небольшой совет по скринам (скриншотам). Для изображений, которые демонстрируют окна программы и элементы интерфейса, используйте формат PNG. Формат JPG для этого не подходит. Он замыливает мелкие делали и делает их плохо различимыми. Это хорошо видно по скринам с текстовым наполнением (надписи, метки и прочее). Также размер файлов изображений PNG получается намного меньше JPG, не теряя в четкости и резкости.

    Цитата: NNK_RTR
    Но Bandicam почему-то считает нужным включать в скриншот и саму рамку


    Может быть с настройками не разобрались? Может быть там есть опция, отвечающая за эту функцию?

    Цитата: NNK_RTR
    Спасибо, подсказали программу "Riot".


    Да не за что. agree
    Есть множество других подобных программ. Мне понравилась RIOT. Когда-то на этом форуме мне предложил один из пользователей. Посмотрел, взял в работу.
    20 сентября 2019 - 14:51 / #8
  9. Оффлайн

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

    Нашёл программу "EXIF Date Changer", которая имеет похожий с вашей разработкой функционал.



    Как видно на скриншоте, автор также использовал отдельные поля для ввода элементов даты. Поэтому вы оказались не первым, кто применил такое решение. Значит двигаетесь в правильном направлении.

    Удачи вам!
    20 сентября 2019 - 17:25 / #9
  10. Оффлайн

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Мастер

    Сообщений: 276

    Создано тем: 52

    Рейтинг: 5

    Репа: (61|61|0)

    Баллы: 1771

    Был: 2024-04-25 21:42

    Лайков: 86

    Да, дизайн конечно, интересней...
    Насчет первенства, прообраз моей программы написан больше 10 лет назад. Тогда она, правда, состояла из нескольких написанных на скорую руку программ, которые я и попытался объединить в одну. Но алгоритм вычисления смещения остался прежнем, немного только был адаптирован код к современному Delphi. Принцип ввода данных тоже не изменился, просто использовались компоненты TEdit. Настроек было больше и выбранная фотография отображалась в окне просмотра, да и само окно было больше.

    Но я собственно не об этом.
    На страницах форума (по моему "Вопросы начинающих и не только" была просьба помочь в переводе этой или почти этой программы.
    Тогда мне было некогда, я собрался съездить в гости, сохранил ссылку на эту страничку в своих запоминалках. А по приезду меня ждал сюрприз. Старший внук, здоровый балбес - 17 лет уже, решил установить какую-то свою игрушку и ему не хватило места на выделенном ему логическом диске. Тогда он решил расширить диск. Ну и расширил... Причем так, что никакие программы восстановления данных не помогли. Остался я практически без инструментов и запоминалок. Теперь потихонечку восстанавливаю...
    Попытался найти эту страничку на сайте но не нашел. Та программа была написана на Visual Basic. Я хотел подумать о способе перевода таких программ и в случае, если придумаю, добавить тему в книжку "Начинающему борцу с крякозябликами".
    Может Вы, или кто-то другой, читающий этот комментарий, помнит расположение этого вопроса. Можно поискать и другую программу, но та точна не была никак защищена, полностью раскрылась в декомптляторе.

    20 сентября 2019 - 21:38 / #10

Статистика форума, пользователей онлайн: 0 (за последние 20 минут)

---
Создано тем
1177
Всего сообщений
15329
Пользователей
17848
Новый участник
SoCu