В BitmapMetadata.DateTaken время смещается на час вперед - C#

Узнай цену своей работы

Формулировка задачи:

При попытке получить дату снимка из jpg или nef файла, получаю значение на один час больше, чем записано в exif. Возможно, дело в переходе России на постоянно зимнее время, т.к. для фото, сделанных с 01.01.2012 такого не наблюдается, а вот для всех старых фото смещение на час есть. Первый вариант кода, которым пытаюсь получить дату:
    
                string dateTaken = null;
                using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    try
                    {
                        BitmapSource img = BitmapFrame.Create(fs);
                        BitmapMetadata md = (BitmapMetadata) img.Metadata;
 
                        if (md != null) dateTaken = md.DateTaken;
                    }
                        // ReSharper disable EmptyGeneralCatchClause
                    catch (Exception) {}
                        // ReSharper restore EmptyGeneralCatchClause
                }
                DateTime date = dateTaken == null ? File.GetLastWriteTime(fileName) : DateTime.Parse(dateTaken);
Второй вариант кода:
                FileStream foto = File.Open(fileName, FileMode.Open, FileAccess.Read);
                BitmapDecoder decoder = JpegBitmapDecoder.Create(foto, BitmapCreateOptions.IgnoreColorProfile, BitmapCacheOption.Default);
                BitmapMetadata tmpImgExif = (BitmapMetadata)decoder.Frames[0].Metadata.Clone();
 
                DateTime date = Convert.ToDateTime(tmpImgExif.DateTaken);
Одно из фото, на котором получаю не корректное время, приложил к данному сообщению. Как получить правильное время из exif?

Решение задачи: «В BitmapMetadata.DateTaken время смещается на час вперед»

textual
Листинг программы
DateTimeOffset dateTime = DateTimeOffset.FromFileTime((((long)time.dwHighDateTime) << 32) + (uint)time.dwLowDateTime);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы