|   |   | 
| 
 | Получение картинки из Active Directory | ☑ | ||
|---|---|---|---|---|
| 0
    
        Наська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!!!! | |||
| 1
    
        Godofsin 24.01.13✎ 05:05 | 
        jpg заменить на bmp&     | |||
| 2
    
        Наська72 24.01.13✎ 05:48 | 
        Пробовала.Эффект такой же.     | |||
| 3
    
        Наська72 24.01.13✎ 11:48 | 
        Неужели никто таким извратом не занимался? 
  Может быть есть альтернативные варианты? Библиотечки какие-нибудь? | |||
| 4
    
        Наська72 25.01.13✎ 12:44 | 
        По сути в строке Stream.Write(Фото) под Фото подразумевается ComSafeArray, то есть массив. 
  Как из ComSafeArray сделать хотя бы двоичные данные, что бы потом можно было попробовать НовыйКартинка(ДвоичныеДанныеПуть)???? Помогите, пожалуйста! | |||
| 5
    
        acsent 25.01.13✎ 12:48 | 
        Ты получаешь thumbnailPhoto а не просто фото     | |||
| 6
    
        Наська72 25.01.13✎ 13:04 | 
        В чем отличие и как с ним быть?     | |||
| 7
    
        djekting 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(); КонецПроцедуры | |||
| 8
    
        Наська72 28.01.13✎ 06:44 | 
        (7) не вижу ничего принципиально нового. У меня так же есть запрос, поле из него тоже через Стрим пишу в файл. Вопрос в другом - почему картинка такая маленькая(сжатая?) и как записать нормально картинку?     | |||
| 9
    
        Наська72 28.01.13✎ 06:57 | 
        Попробовала следующую схему: ComSafeArray->BASE64->ДвоичныеДанные->Картинка
  Всё равно получаю сжатую картинку. | |||
| 10
    
        Наська72 28.01.13✎ 07:35 | 
        Всем спасибо. Получилось!     | |||
| 11
    
        vde69 28.01.13✎ 08:15 | 
        (10) получилось - покажи как :)     | |||
| 12
    
        bse 28.01.13✎ 12:48 | 
        зажал походу     | |||
| 13
    
        oleg_km 28.01.13✎ 13:32 | 
        (12) похоже отсыпаться пошел     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |