Имя: Пароль:
1C
1С v8
Свойства картинки, данные GPS
0 Nikoss
 
20.04.12
13:35
в общем есть фотка с galaxy Note, там в свойствах изображения есть широта и долгота... как программно достать значения оттуда?

пробовал, как делали тут v8: размер картинки из 1С

Шел = Новый COMОбъект("Shell.Application");
Папка = Шел.NameSpace(ДиалогОткрытияФайла.Каталог);
Файл = СтрЗаменить(ДиалогОткрытияФайла.ПолноеИмяФайла,"\","" "");
Файл = Папка.ParseName(СтрПолучитьСтроку(Файл,СтрЧислоСтрок(Файл)));
Для Сч=-100000 По 100000 Цикл
   Попытка
       Значение = Папка.GetDetailsOf(Файл,Сч);
       Если ЗначениеЗаполнено(Значение) Тогда
           Сообщить(Строка(Сч) + ": " + Значение);
       КонецЕсли;
   Исключение
   КонецПопытки;
КонецЦикла;

так большинство свойств достается, но нет широты и долготы.
1 oleg_km
 
20.04.12
13:56
Возможно это пользовательские свойства и у них индекс больше 100000, например с 0x8000000
2 Nikoss
 
20.04.12
14:10
(1), сейчас попробовал 10млн - пусто
3 Grobik
 
20.04.12
14:19
4 Nikoss
 
20.04.12
14:27
(3), а можете подсказать как это понять :) я в англ. не силен, да и еще то что есть там не совпадает с моим.

например у меня есть при сч = 12 : ?20.?04.?2012 ??5:59

может я чтото не туда пишу?
5 Grobik
 
20.04.12
14:30
Оригинал картинки на файло обменник и ссылку. Самому интересно.
6 Nikoss
 
20.04.12
14:34
7 Grobik
 
20.04.12
18:14
Занятно нету там его. Даже поля такого.

Для Сч=0 По 300 Цикл
   Попытка
       Значение = Папка.GetDetailsOf(Файл,Сч);
       Если ЗначениеЗаполнено(Значение) Тогда
           Сообщить(Строка(Сч) + ": " + Значение);
       КонецЕсли;
   Исключение
   КонецПопытки;
КонецЦикла;

С неправильным путем выдает все 267 вариантов. В которых широты и долготы нет. Хотя должно выдавать все, что показывает эксплорер а тот координаты показывает.
8 Grobik
 
20.04.12
20:21
Короче никто этого ни на одном языке не делал. Копать в сторону GetDetailsEx и всяких выражений типа{9B174B33-40FF-11d2-A27E-00C04FC30871}
9 Nikoss
 
21.04.12
16:32
плохи дела... в понедельник уже нужно чтоб готово было, видимо выходные испорчены.
10 aleks-id
 
21.04.12
16:52
Процедура Сформировать()
ПутьКФайлу = "D:\Downloads\Картинки\"; // обязательно заканчивать слэшем
ИмяФайла = "281af404c604206bc45eb6b7cea.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"));
Сообщить(РезультатСкрипта);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
11 Grobik
 
22.04.12
13:37
(10) Эта переписанная с семерочного примера процедура выдает то-же самое, что и (1) только с семерочным гемором. GetDetailsOf выдает 267 параметров файла, данных геотегирования там нет. Есть в GetDetailsEx который еще никто для этих целей толком не заюзал. Так, что или читать вдумчиво сайт микрософта, там примеры есть но я с ходу не разобрался или использовать сторонние длл, которые придется регистрировать, либо самому читать файл и вычленять оттуда. Лучше бы автор разобрался с GetDetailsEx и нам рассказал, там много вкусностей есть.
12 Grobik
 
22.04.12
13:38
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс