Меню Рубрики

Установка даты файла exif

Редактирование EXIF данных о времени съемки фотографий в программе EXIF Date Changer

Здравствуйте уважаемые читатели блога www.ithabits.ru. Подходит к концу время летних отпусков. Народ массово возвращается восвояси из разных замечательных мест. Многие с большим количеством сделанных во время путешествия или отдыха фотографий.

Погода этой осенью, по крайней мере в Москве, стоит просто ужасная. А значит, самое время заняться обработкой привезенных снимков.

Сегодня мы поговорим о редактировании EXIF данных фотографий, главным образом о том, как изменить записанное в EXIF фото время съемки.

Наверняка уже не для кого не секрет, что любая современная цифровая камера, будь то отдельный фотоаппарат, или фотокамера в телефоне или другом электронном устройстве, записывает в файл с изображением информацию о снимке — данные в формате EXIF (Exchangeable Image File).

В первую очередь к ним относятся: модель фотоаппарата, которым был сделан снимок, значения выдержки, диафрагмы, фокусное расстояние, светочувствительность ISO, дата и время съемки.

Это далеко не все. В зависимости от модели фотоаппарата в EXIF может быть прописано большое количество других параметров, таких как: разрешение, тип объектива, использование вспышки и многие другие, включая даже серийный номер аппарата.

Сегодня нас будут интересовать данные о времени съемки, записанные в EXIF. Вскоре будет понятно почему.

Зачем редактировать значения EXIF данных

Скажите честно. Вы всегда до начала съемок проверяете время, выставленное в вашем фотоаппарате или видеокамере? Думаю, что не ошибусь, если предположу такой вариант ответа из лексикона Виктора Акашина: “Скорее нет, чем да”. Опять же можно еще сказать, что счастливые часов не наблюдают.

Так ли уж это страшно, если часы в вашем фотоаппарате уйдут в любую сторону на несколько минут? Да нет, конечно. Если речь не идет о точном временном протоколировании некого события, то и бог с ним.

Проблема начинается тогда, когда нужно объединить в один альбом репортажные, то есть выстроенные в хронологическом порядке, фотографии, сделанные разными фотоаппаратами. Вот тут ошибка времени +-3…5 минут может стать крайне неприятной.

Впервые я столкнулся с такой проблемой, когда мы с женой начали снимать в совместных путешествиях параллельно на два фотоаппарата. Я, скажем, при проходе или проезде улицы – левую сторону, она – правую. Или наоборот. Снимаем много — все, что понравилось. А то ведь, что не сфотографировал, то через некоторое время и забыл.

Когда по возвращении домой я взялся обрабатывать снимки, то выяснилось, что в предотъездной суете совершенно забыл проверить какое время показывают и, следовательно, записывают в EXIF данные фотографий, наши фотокамеры. На одной было что-то типа +3 минуты, на другой –4. Суммарные 7 минут оказались настоящим кошмаром.

Апофеозом той серии фотографий, после которого стало понятно, что дальше “так жить нельзя”, явился фуникулер в Бергамо. По версии одного фотоаппарата получалось, что мы уже благополучно поднялись наверх, попутно созерцая через окно головокружительные местные красоты, по версии другого, что еще только собираемся.

Нужно было найти способ отредактировать время, записанное в EXIF фотографий, причем в пакетном режиме. В принципе, изменить в EXIF отметку времени для каждой фотографии по отдельности можно в Picasa, но уж больно это муторно и долго получилось бы для нескольких сотен снимков.

Ожидания найти готовую программу, которая позволила бы осуществить нужное групповое редактирование снимков, были близки к нулю. Каково же было мое удивление, я бы даже сказал, восхищение, когда такая программа для редактирования EXIF нашлась. Она называется EXIF Date Changer.

Назначение и возможности программы EXIF Date Changer

Так как время от времени создаются ее новые релизы, то программу лучше скачать с сайта разработчика. На момент написания этой статьи актуальной была версия 3.0.1.2.

Программа EXIF Date Changer позволяет:

  • Быстро отредактировать записанные в EXIF значения даты / времени для всех изображений в выбранной папке (пакетная обработка);
  • Переименовать все изображения с включением в имена файлов фотографий отметок даты / времени съемки и настройкой предпочтительного формата имени выходного файла. Например, “2013-08-15 11-38-56 – Italy.jpg” или “20130815_Italy.jpg”;
  • Облегчить сортировку за счет лучшего именования файлов;
  • Добавить информацию об авторских правах и авторах, теги (ключевые слова) (используется во многих программах, таких как Picasa или Adobe Lightroom) (в версии Pro);
  • Добавить отметку даты / времени в изображения, которые изначально не имеют данных EXIF. Таковыми являются, например, отсканированные фотографии. (Очень полезная опция для создания цифровых фотоальбомов из отсканированных старых фотографий);
  • Добавить водяные знаки в изображения JPEG (в версии Pro);
  • Легко сортировать и обрабатывать изображения с нескольких фотокамер (в версии Pro).
Читайте также:  Установка и настройка tor в debian

EXIF Date Changer предлагается в двух вариантах: Standard (бесплатный ) и Pro ($14,95). Платная версия Pro ориентирована на профессиональное использование и отличается от Standard поддержкой помимо JPG большого количества форматов файлов изображений, таких как: RAW, CR2, NEF и т.д. Полный перечень поддерживаемых Pro-версией форматов представлен на сайте программы.

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

Не смотря на то, что в одном из фотоаппаратов я изначально сохраняю снимки в формате NEF (Nikon), окончательная обработка и формирование альбомов делается в замечательном менеджере фотографий Picasa в JPG. По этой причине бесплатной версии программы оказалось более чем достаточно.

Что позволяет сделать бесплатная версия программы EXIF Date Changer

Так выглядит основное окно программы:

Интерфейс программы доступен на нескольких языках. Как мы видим из представленного скриншота, русский язык также поддерживается, что приятно.

Для того, чтобы изменить (сдвинуть) время, записанное в EXIF фотографий, размещенных в некоторой папке, нужно указать эту исходную и выбрать конечную папки и на первой вкладке “Разница во времени” задать нужное в ту или иную сторону смещение выбрав строку “Настроить время”.

В этой же строке справа есть калькулятор для расчета разницы времени по двум его заданным значениям.

Обратите внимание, что исходные фотографии модифицироваться не будут – их копии с измененными значениями EXIF данных будут созданы в выбранной конечной папке (и это правильно).

На примере у всех фотографий, представленных в исходной папке, время съемки увеличится на 5 минут. Вот так все просто.

Сложнее может оказаться само определение значения сдвига. Можно предложить такие варианты решения задачи:

  • Если съемка производилась относительно недавно и цифровые часы в фотоаппарате не успели “уехать” еще дальше или сбиться по той или иной причине, например, из-за проблем с аккумулятором, то значение необходимого сдвига можно принять равным разнице текущего времени и времени в часах фотоаппарата. Обязательным условием при этом является доступность самой фотокамеры.

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

  • Если стоит задача просто синхронизировать по времени фотографии с нескольких камер, то можно поступить таким образом.

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

В качестве “базовой” камеры в данном случае имеет смысл принять ту, часы которой показывают время наиболее близкое к действительному.

Именно таким способом не так давно я успешно скомпоновал веб альбом Picasa одного юбилейного события. Фотографии были сделаны несколькими разными аппаратами с различных точек и без предварительного редактирования значений отметок времени съемки выстроить их в единый ряд не представлялось возможным.

Для того, чтобы посмотреть дату и время съемки фотографии (не путать с датой и временем создания файла), достаточно открыть свойства файла в файловом менеджере Windows Explorer и открыть вкладку “Подробно”:

Кроме того, данные EXIF показывают практически все менеджеры фотографий, например, Picasa.

По сути дела это все, что непосредственно касалось решения поставленной задачи. Дальше можно копировать фотографии с отредактированными EXIF данными отметок времени съемки, сделанные разными камерами, в одну папку и смотреть, что получилось. Если в расчеты разницы времени вкралась ошибка, просто повторяем операцию с другим значением сдвига.

В заключении еще несколько слов по поводу программы. В варианте Standard в программе EXIF Date Changer доступны почти все действия на первых двух вкладках.

На первой вкладке “Разница во времени”, которую мы частично уже разобрали, помимо временного сдвига в строке “Установить дату и время” можно задать для записи в EXIF фотографии абсолютное значение даты и времени:

Читайте также:  Установка и подключение проходного выключателя

Правая кнопка в данной строке позволяет скопировать дату и время из EXIF произвольно выбранной фотографии.

В версии Pro дополнительно можно задать интервал последовательного увеличения времени для всех фотографий. В бесплатном варианте программы при выборе этой опции в EXIF всех фотографий будут прописаны одинаковые дата и время съемки.

Если это нежелательно, то можно выбирать нужные фотографии переключившись в “Выбрать изображения” в верхней правой части экрана.

Переключатель “Без настроек даты” используется в том случае, когда дату и время съемки изменять не нужно, но предполагается выполнить другие операции, предусмотренные в программе. Настройка этих операций осуществляется на следующих вкладках:

На вкладке “Опции” можно задать подпись изображения и переименование файлов с использованием значений даты и времени. Шаблон, по которому будут переименованы файлы, можно задать в соответствии со своими предпочтениями.

На этом возможности бесплатной версии программы заканчиваются.

Дополнительные возможности профессиональной версии EXIF Date Changer

Тем, кому нужны функции, представленные на вкладках “Дополнительно” и “Фильтры”, придется обновить программу до версии Pro. Могу предположить, что эти опции будут востребованы все же больше для решения профессиональных задач обработки изображений.

Для решения нашей задачи коррекции времени съемки вполне хватило возможностей бесплатной версии Standard программы EXIF Date Changer, за что большое спасибо ее разработчикам.

Желаю всем делать побольше красивых фотографий и без проблем компоновать из них еще более красивые и «правильные» альбомы.

источник

Изменение даты файла согласно EXIF

После приобретения цифровой мыльницы у меня возникла необходимость каталогизировать отснятые файлы хотя бы по временам года. Но, как оказалось, после копирования с камеры дата изменения файла устанавливается в дату копирования и потом для того, чтобы узнать реальное время съемки, необходимо смотреть EXIF информацию или атрибуты файлы. Конечно, любая уважающая себя программа по просмотру файлов умеет извлекать из EXIF дату съемки, но мне данный способ неудобен.
Вот я и решил написать небольшую программу на C# которая ищет *.jpg файлы в текущем или указанном каталоге, извлекает время съемки и, в случае если это время не совпадает с временем изменения файла, то устанавливает это время согласно дате и времени съемки. Надеюсь, найдутся те, кому она пригодится.
Да, возможно есть графические программы в которые встроен аналогичный функционал, но я еще преследовал цель написать чего-нить на C#

Спасибо данной статье за полезную информацию.

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

Чему я научился у C#/.Net разработчиков на конференции Go#

На какую конференцию я как C#/.Net разработчик хотел бы пойти

Маленькие чудеса C#/.NET – структура DateTimeOffset

Вопросы и ответы

Как убрать смещение снизу у DropDownItems?

Как прочитать или записать .txt-файл по произвольному пути после компиляции?

C# как реализовать выбор даты ,времени и фильма для пользователя и добавление даты времени и фильма для администратора?

Как сделать тонкую рамку формы без верхней плашки окна?

Как вращать объект к точке нажатия?

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Комментарии 53

Кстати, файловые дескрипторы лучше закрывать в Finally

Конечно, «в чужом глазу и сучок видишь, а в своем и бревна (порой) не замечаешь», но позволю себе пару замечаний по коду.

Перехват всех исключений — плохой подход.
catch (Exception)
<

>
К тому же из лога непонятно почему именно файл (и вообще какой файл) не открылся (то есть придется лезть в дебаггер).
Console.WriteLine(«Невозможно открыть файл»);

Вы уж определитесь в каком стиле именовать приватные переменные.
private DateTime creationTime;
private FileStream Foto;

И почему класс ReadExifInfo приватный? 😉

PS я понимаю, что программа написана «для себя». Но раз уж вы хотели потренироваться в разработке на c#, то, надеюсь, мои субъективные замечания будут полезны.

Да, спасибо за полезные замечания. По поводу «какой файл не открылся?» — это видно, так как выше есть строка

По поводу именования, согласен, единый стиль не соблюдается.

>>>По поводу именования, согласен, единый стиль не соблюдается.

Если хочется поучиться, натравите StyleCop или поставьте resharper.
Используйте директиву using чтобы не писать Foto.Close два раза
Объявляйте переменные по месту первого использования.
Называйте нормальными словами

Читайте также:  Установка гбо на субару трибека отзывы

if (args.Length > 0)
<
if(args[0] == «/?») <
Console.WriteLine(«Изменение даты последней записи в файл на дату съемки»);
Console.WriteLine(«Использование: „);
Console.WriteLine(“ запуск без параметров — изменение в текущей папке»);
Console.WriteLine(» — изменение в указанной папке»);
return;
>
if (Directory.Exists(args[0]))
<
jpgFilesInDir = Directory.EnumerateFiles(args[0], «*.jpg»); //получаем список файлов в указаной директории
>
else
<
Console.WriteLine(«Указанного пути не сущестует»);
return;
>
>
else
<
jpgFilesInDir = Directory.EnumerateFiles(curDir, «*.jpg»); //получаем список файлов в текущей директории
>

я бы вынес в отедльный метод. Или вообще сделал бы отдельный класс ArgumentsParser, который инкапсулирует логику разбора аргументов.
То есть было бы что-нибудь типа:

public class ArgumentsParser
<
public static Parse(string[] args)
<

return new DateToEXIFArguments(. );
>
>

public class DateToEXIFArguments
<
public string Directoty

// конструктор
public DateToEXIFArguments(string directory)
<
Directoty = directory;
>
>

static void Main(string[] args) <

var arguments = ArgumentsParser.Parse(args);
if(arguments!=null && !string.IsNullOrEmpty(arguments.Directory))
<
// используем каталог из аргументов
>
else
<
// используем текущий каталог
>
>

PS прошу прощение за неотформатированный код, хабр почему то не воспринимает мои теги *source lang=«cs»*

источник

Пакетное исправление/добавление даты в фотографиях (EXIF)

Важно: если покажется, что статья проплачена, см. конец статьи.

Речь пойдёт о дате съёмки в метаданных фотографий — EXIF, и как я эти данные добавлял/изменял для кучи фотографий.

В далёком 2004м году моим первым «цифровым фотоаппаратом» стал Aiptek Mini Pencam . Такая вебкамера на батарейках с разрешением 1,3 мегапикселя и памятью аж 16 мегабайт. В силу конструктивной простоты в камере не было предусмотрено записи EXIF-информации в сами фотографии, т.е. никаких метаданных в снимках не было, и о времени съёмки могла говорить только дата создания файла.

Несмотря на все технические ограничения, за время пользования у меня скопилось достаточно много снимков с этого устройства, ведь оно было единственным фото-устройством в семье. По юности лет и соответствующей технической безграмотности, а так же в силу малых объёмов винчестеров, оригиналы фотографий, без всяких копий, гонялись через всякие конвертеры, «шумодавы», улучшалки (вроде Google Picasa).

Небо 2004 года на Aiptek PenCam

Надо ли говорить, что с «датой создания файлов» случились катастрофические изменения? Конечно, фотоархив изначально сортировался по более-менее грамотной схеме с деревом вида «фотогодмесяц». Но отсутствие EXIF-данных в самих фотографиях зачастую просто удручает. Та же Picasa сортирует снимки по метаданным, а если их нет, берётся за дату создания. И получалась адская каша…

В один прекрасный день я твёрдо решил навести порядок, и стал искать подручное средство для пакетного изменения данных EXIF в куче фотографий. Перелопатить нужно было несколько тысяч снимков, о ручной коррекции и речи не шло.

Перепробовал много разного софта. И таки нашёл программу, которая делает именно это: EXIF Date Changer. Условно бесплатная — основной функционал доступен без ограничений, дополнительный — при покупке ключа. Не триал, без рекламы. И статья тоже не реклама.


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

Впрочем, случай у меня редкий, но софтина может помочь ещё в нескольких случаях:

1. Добавить EXIF метаданные для отсканированных фотографий (в которых по-определению нет нормального EXIF’a);
2. Синхронизировать даты с нескольких камер: допустим, на одном мероприятии использовалось несколько камер, а позже обнаружилось, что часы на всех камерах настроены по-разному. С помощью программы эту разницу во времени можно устранить;
3. После серии снимков обнаружилось, что на камере слетели часы, и жаркие летние фотографии датируются первым января. Такое нередко случается с фотоаппаратами.

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

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

источник

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

Adblock
detector