Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Получение картинки из Active Directory

Получение картинки из Active Directory
Я
   Наська72
 
24.01.13 - 03:50
Добрый день! Взываю к вашей помощи, форумчане, ибо совсем задолбалась с 1с.
Итак, задача в числе прочего дернуть из карточки пользователя из Active directory фото и поместить его кое-куда.
На входе получаю ComSafeArray через Stream записываю его. Но это не картинка, это ужас - пара квадратиков в уголочке.

НоваяСтрока.Фото            = obj1.thumbnailPhoto;
...
Stream = Новый COMОбъект("ADODB.Stream"); 
Stream.Type = 1//StreamTypeEnum.adTypeBinary; 
 
Stream.Mode = 3//ConnectModeEnum.adModeReadWrite; 
 
Stream.Open(); 
Stream.Write(Фото); 
Путь = ПолучитьИмяВременногоФайла(".jpg"); 
Stream.SaveToFile(Путь)//"C:\image.jpg");//SaveOptionsEnum.adSaveCreateNotExist); 
 
Stream.Close(); 
...

Как получить не сжатое изображение?
Может быть есть другие способы?
HELP!!!!
 
 
   Godofsin
 
1 - 24.01.13 - 05:05
jpg заменить на bmp&
   Наська72
 
2 - 24.01.13 - 05:48
Пробовала.Эффект такой же.
   Наська72
 
3 - 24.01.13 - 11:48
Неужели никто таким извратом не занимался?
Может быть есть альтернативные варианты?
Библиотечки какие-нибудь?
   Наська72
 
4 - 25.01.13 - 12:44
По сути в строке Stream.Write(Фото) под Фото подразумевается ComSafeArray, то есть массив.
Как из ComSafeArray  сделать хотя бы двоичные данные, что бы потом можно было попробовать НовыйКартинка(ДвоичныеДанныеПуть)????
Помогите, пожалуйста!
   acsent
 
5 - 25.01.13 - 12:48
Ты получаешь thumbnailPhoto а не просто фото
   Наська72
 
6 - 25.01.13 - 13:04
В чем отличие и как с ним быть?
   djekting
 
7 - 25.01.13 - 14:22
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Stream=Новый COMОбъект("ADODB.Stream");
    Stream.Type=1;
    Stream.Open();
    Stream.LoadFromFile("C:\БылЗвонок.bmp");
    Connection=Новый COMОбъект("ADODB.Connection");
    Connection.Open("Provider=SQLOLEDB.1; Data Source=NEXTGEN; Initial Catalog=MyBase; User ID=sa;");
    RecordSet=Новый COMОбъект("ADODB.Recordset");
    RecordSet.CursorLocation=3;
    RecordSet.LockType=2;
    Запрос="Select data from dbo.MyTable";
    RecordSet.Open(Запрос, Connection);
    Если RecordSet.RecordCount=0 Тогда
        RecordSet.AddNew();
   //    RecordSet.Fields(0).Value=1;
 
 
    Иначе
        RecordSet.MoveFirst();
    КонецЕсли;
    RecordSet.Fields("Data").Value=Stream.Read(-1);
    RecordSet.Update();
    Stream.Close();
КонецПроцедуры

Процедура ОсновныеДействияФормыd(Кнопка)
    Stream=Новый COMОбъект("ADODB.Stream");
    Stream.Type=1;
    Stream.Open();
    Connection=Новый COMОбъект("ADODB.Connection");
    Connection.Open("Provider=SQLOLEDB.1; Data Source=NEXTGEN; Initial Catalog=MyBase; User ID=sa;");
    RecordSet=Новый COMОбъект("ADODB.Recordset");
    RecordSet.CursorLocation=3;
    RecordSet.LockType=2;
    Запрос="Select data from dbo.MyTable";
    RecordSet.Open(Запрос, Connection);
    RecordSet.MoveFirst();
    Stream.Write(RecordSet.Fields("Data").Value);
    Stream.SaveToFile("c:\БылЗвонокВост.bmp");
    Stream.Close();
КонецПроцедуры
   Наська72
 
8 - 28.01.13 - 06:44
(7) не вижу ничего принципиально нового. У меня так же есть запрос, поле из него тоже через Стрим пишу в файл. Вопрос в другом - почему картинка такая маленькая(сжатая?) и как записать нормально картинку?
   Наська72
 
9 - 28.01.13 - 06:57
Попробовала следующую схему: ComSafeArray->BASE64->ДвоичныеДанные->Картинка

Всё равно получаю сжатую картинку.
   Наська72
 
10 - 28.01.13 - 07:35
Всем спасибо. Получилось!
 
 Рекламное место пустует
   vde69
 
11 - 28.01.13 - 08:15
(10) получилось - покажи как :)
   bse
 
12 - 28.01.13 - 12:48
зажал походу
   oleg_km
 
13 - 28.01.13 - 13:32
(12) похоже отсыпаться пошел

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует