Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RFpro.ru: 1С для программиста


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Vasiliy83
Статус: Профессионал
Рейтинг: 2352
∙ повысить рейтинг »
Лиджи-Гаряев Владимир
Статус: Профессионал
Рейтинг: 1404
∙ повысить рейтинг »
Владимир Лазурко
Статус: Профессор
Рейтинг: 962
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / 1С:Предприятие для программиста

Номер выпуска:1177
Дата выхода:24.11.2011, 20:30
Администратор рассылки:Владимир Лазурко (Профессор)
Подписчиков / экспертов:226 / 97
Вопросов / ответов:1 / 1

Консультация # 184428: Здравствуйте! У меня возникли сложности с таким вопросом: Как пограммно определить дату и время снимка в файле jpg? (Не дату создания или изменения)!!! Это находится в 1 строке файла, если открыть его блокнотом. ОС ВинХР. Попробовал открыть jpg как текстовый файл, но строка 1 читается до первого непечатуемого символа. Возможно, есть ка...


Консультация # 184428:

Здравствуйте! У меня возникли сложности с таким вопросом:
Как пограммно определить дату и время снимка в файле jpg? (Не дату создания или изменения)!!!
Это находится в 1 строке файла, если открыть его блокнотом. ОС ВинХР.
Попробовал открыть jpg как текстовый файл, но строка 1 читается до первого непечатуемого символа.
Возможно, есть какая то программа, в которую можно передать имя файла командной строкой и получить ответ, записанный в txt файл?
Или есть программа, которая переименует файл jpg в формат ГГГГММДДЧЧММСС.jpg ?

Дата отправки: 12.11.2011, 20:14
Вопрос задал: Пресняков Владимир Иванович (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Владимир Лазурко (Профессор):

Здравствуйте, Пресняков Владимир Иванович!

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

Можно данные EXIF получить и с помощью скрипта:

Код (JavaScript):
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.NameSpace("D:\Downloads\Картинки\")
Set objItem = objFolder.ParseName("PIC-0490.jpg")
strResult = vbNullString
strResult = strResult & "Информация об объекте """ & objItem.Path & """:" & vbCrLf
For i=-1 To 40
    strResult = strResult & i & " - " & objFolder.GetDetailsOf(objItem, i) & vbCrLf
Next
MsgBox strResult, vbInformation


Его результат я и привёл в скрине выше. Если убрать лишнее и в параметре указать конкретно 31-е поле, то получится так:
Код (JavaScript):
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.NameSpace("D:\Downloads\Картинки\")
Set objItem = objFolder.ParseName("PIC-0490.jpg")

MsgBox "Время создания " & objFolder.GetDetailsOf(objItem, 31) & vbCrLf

Этот код можно сохранить в файле с расширением .vbs, предварительно заменив строку с папкой и именем файла. Путь к файлу во второй строке обязательно закрывается слэшем.

Есть еще одна оговорка - этот скрипт корректно работает в Windows XP. В Vista-подобных ОС в 31-е поле система возвращает значение 26-го поля.

Т.к. код на Visual Basic в 1С напрямую запустить нельзя, сделаем для него обертку:
Код (MD):
Процедура Сформировать()
    ПутьКФайлу = "D:\Downloads\Картинки\"; // обязательно заканчивать слэшем
    ИмяФайла = "PIC-0490.jpg";
    Попытка
        ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
        ScrptCtrl.Language="vbscript";
        ScrptCtrl.AddCode("
            |Function GetEXIFDate()
            |Set objShellApp = CreateObject(""Shell.Application"")
            |Set objFolder = objShellApp.NameSpace(""" + ПутьКФайлу + """)
            |Set objItem = objFolder.ParseName(""" + ИмяФайла + """)
            |GetEXIFDate = objFolder.GetDetailsOf(objItem, 31)
            |End Function");
        РезультатСкрипа=СокрЛП(ScrptCtrl.Run("GetEXIFDate"));
        
        Сообщить(РезультатСкрипа);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры


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

Скачать обработку (25.0 кб). Архив распаковать и просто подключить как новую базу в 1С:Предприятии 7.7
Вот снимок:


Успехов!

Консультировал: Владимир Лазурко (Профессор)
Дата отправки: 24.11.2011, 14:36
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное