Имя: Пароль:
1C
 
Конвертируем БМП в ЖЕПЕГ в адинес (ну и еще всякая шняга)
0 smaharbA
 
08.12.10
11:02
Как сделать рабочей без наличия библиотеки, без интернета, без админских прав и для Виста/7/2008, но с использованием именно этого ком-объекта сами сделаете...

Функция ЗагрузкаФайлА(УРЛ,Прокси,Пользователь,Пароль,ТаймАут=3000,Путь="")
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.language="javascript";
   Это=Скрипт.Eval("this");
   Агент="Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
   Попытка
       ХТТПЗапрос = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
       Скрипт.AddObject("ХТТПЗапрос",ХТТПЗапрос);
       Если ПустоеЗначение(Прокси)=0 Тогда
           ХТТПЗапрос.SetProxy(2,Прокси);
       КонецЕсли;
       ХТТПЗапрос.SetTimeouts(ТаймАут,ТаймАут,ТаймАут,ТаймАут);
       ХТТПЗапрос.Open("GET", УРЛ, 0);
       Если ПустоеЗначение(Пользователь)=0 Тогда
           ХТТПЗапрос.SetCredentials(Пользователь,Пароль,1);
       КонецЕсли;
       Скрипт.Eval("ХТТПЗапрос.Option(0)='"+Агент+"'");
       ХТТПЗапрос.setRequestHeader("User-Agent",Агент);
       ХТТПЗапрос.Send();
       к=_GetPerformanceCounter();
       Если ХТТПЗапрос.Status<>200 Тогда
           Сообщить("Страница "+УРЛ+" неотвечает. Пипец!","!!!");
           Возврат 0;
       КонецЕсли;
       Стрим = СоздатьОбъект("ADODB.Stream");
       Стрим.Mode = 3;
       Стрим.Type = 1;
       Стрим.Open();
       Скрипт.AddObject("Стрим",Стрим);
       Скрипт.Eval("Стрим.Write(ХТТПЗапрос.responseBody)");
       Стрим.SaveToFile(Путь,2);
       Стрим.Close();
   Исключение
       Сообщить(ОписаниеОшибки(),"!!!");
       Возврат 0;
   КонецПопытки;
   Возврат 1;
КонецФункции    // ЗагрузкаФайла(УРЛ,Путь="")

Функция РегистрацияБиблиОтики(БиблиОтика,Вызов)
   Попытка
       ШелСкрипт=СоздатьОбъект("WScript.Shell");
       ШелСкрипт.Run("cmd /c regsvr32 /s """+БиблиОтика+"""",0,-1);
       Объект=СоздатьОбъект(Вызов);
       Возврат 1;
   Исключение
       Сообщить(ОписаниеОшибки(),"!!!");
       Возврат 0;
   КонецПопытки;
КонецФункции    // РегестрацияБиблиОтики(БиблиОтика,МашинаИлиУсер=0)

Функция РекурсивноФайлы(Папка,Сп)
   Перем Атрибуты;
   Файл=ФС.НайтиПервыйФайл(Папка+"\*");
   Пока ПустоеЗначение(Файл)=0 Цикл
       Если (Файл<>".") или (Файл<>"..")  Тогда
           ФС.АтрибутыФайла(Папка+"\"+Файл,,Атрибуты);
           Если Сред(Атрибуты,4,1)=1 Тогда
               РекурсивноФайлы(Папка+"\"+Файл,Сп);
           КонецЕсли;
           Сп.ДобавитьЗначение(Папка+"\"+Файл,Нрег(Файл));
       КонецЕсли;
       Файл=ФС.НайтиСледующийФайл();
   КонецЦикла;
КонецФункции    // РекурсивноФайлы(Папка)

Функция Разархивация(Архив,Куда="[КаталогВременныхФайлов()]")
   Попытка
       Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
       Скрипт.language="javascript";
       Скрипт.Eval("Перечисление=function(x){return new Enumerator(x)}");
       Это=Скрипт.Eval("this");
       Куда=Шаблон(Куда)+_GetPerformanceCounter();
       Стр=СтрЗаменить(Архив,"\","" "");
       Стр=Нрег(СтрПолучитьСтроку(Стр,СтрКоличествоСтрок(Стр)));
       ФС.СоздатьКаталог(Куда);
       Шел=СоздатьОбъект("Shell.Application");
       Куда=Шел.NameSpace(Куда+"\");
       Сообщить(Архив);
       Сообщить(Шел.NameSpace(Архив+"\").Self.Path);
       Куда.CopyHere(Шел.NameSpace(Архив+"\").Self.Path);
       Перечень=Это.Перечисление(Шел.NameSpace(Архив+"\").Items());
       Пока Перечень.atEnd(0)=0 Цикл
           Сообщить(Перечень.item(0).Path);
           Куда.CopyHere(Архив+"\"+Перечень.item(0).Path,16);
           Перечень.moveNext(0);
       КонецЦикла;
       Архив=Куда.Self.Path;
       Возврат 1
   Исключение
       Сообщить(ОписаниеОшибки(),"!!!");
       Возврат 0;
   КонецПопытки;
КонецФункции    // Разархивация(Архив,Куда)
//*******************************************
Процедура Сформировать()
   Перем Путь,Имя,Фильтр[2],Параметры[2];
   ШелСкрипт=СоздатьОбъект("WScript.Shell");
   ФСО=СоздатьОбъект("Scripting.FileSystemObject");
   УРЛ="http://download.microsoft.com/download/WinXPHome/Utility/2.0/WXP/EN-US/WIAAutSDK.zip";
   //Если оставить пустыми, то без прокси и/или без авторизации
   Прокси="АдресПрокси:ПортПрокси";
   Пользователь="ПользовательПрокси";
   Пароль="ПарольПользователяПрокси";
   ТаймАут=5000;
   Попытка
       Картинки    = СоздатьОбъект("WIA.ImageFile");
   Исключение
       Сообщить("Пытаемся загрузить нужное","i");
       БиблиОтика="wiaaut.dll";
       Если ФС.СуществуетФайл(ФСО.GetSpecialFolder(1).Path+"\"+БиблиОтика)=0 Тогда
           Архив=КаталогВременныхФайлов()+БиблиОтика+".zip";
           Если ЗагрузкаФайлА(УРЛ,Прокси,Пользователь,Пароль,ТаймАут,Архив)=0 Тогда
               Сообщить("Писец и нету и не могем загрузить","!!!");
               Возврат;
           ИначеЕсли Разархивация(Архив)=0 Тогда
               Сообщить("Все еще один Писец и загрузили, но не могем разархивировать","!!!");
               Возврат;
           Иначе
               Сп=СоздатьОбъект("СписокЗначений");
               РекурсивноФайлы(Архив,Сп);
               Если ФС.СуществуетФайл(Сп.Получить(Нрег(БиблиОтика)))=0 Тогда
                   Сообщить("Все еще один Писец и загрузили, и разархивировать, но нифига нету","!!!");
                   Возврат;
               Иначе
                   ФС.КопироватьФайл(Сп.Получить(Нрег(БиблиОтика)),ФСО.GetSpecialFolder(1).Path+"\"+БиблиОтика,1);
                   Если ФС.СуществуетФайл(ФСО.GetSpecialFolder(1).Path+"\"+БиблиОтика)=0 Тогда
                       Сообщить("Все еще один Писец и загрузили, и разархивировать, но нифига не можем скопировать","!!!");
                       Возврат;
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;
       Если РегистрацияБиблиОтики(ФСО.GetSpecialFolder(1).Path+"\"+БиблиОтика,"WIA.ImageFile")=0 Тогда
           Сообщить("ЭТО ПОЛНЫЙ ПИСЕЦ и есть, но не могем загрегить","!!!");
           Возврат;
       КонецЕсли;
       Сообщить("ПОЕХАЛИ","i");
   КонецПопытки;
   Если ФС.ВыбратьФайлКартинки(0,Имя,Путь,"","БМП (*.bmp)|*.bmp","bmp")=0 Тогда
       Возврат;
   КонецЕсли;
   БМП = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";
   ЖЕПЕГ = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
   Картинки    = СоздатьОбъект("WIA.ImageFile");
   Процесс = СоздатьОбъект("WIA.ImageProcess");
   Картинки.LoadFile(Путь+Имя);
   Фильтры=Процесс.Filters;
   ИнфыФильтра=Процесс.FilterInfos;
   Фильтры.Add(ИнфыФильтра.Item("Scale").FilterID);
   Фильтр[1]=Фильтры.Item(1);
   Параметры[1]=Фильтр[1].Properties;
   Параметры[1].Item("MaximumWidth").Value  = 1024;
   Параметры[1].Item("MaximumHeight").Value = 768;
   Фильтры.Add(ИнфыФильтра.Item("Convert").FilterID);
   Фильтр[2]=Фильтры.Item(2);
   Параметры[2]=Фильтр[2].Properties;
   Форматы=Параметры[2].Item("FormatID");
   Форматы.Value=ЖЕПЕГ;
   Картинки = Процесс.Apply(Картинки);
   Если ФС.СуществуетФайл(Путь+Имя+".jpg")=1 Тогда
       ФС.УдалитьФайл(Путь+Имя+".jpg");
   КонецЕсли;
   Картинки.SaveFile(Путь+Имя+".jpg");
   ЗапуститьПриложение(Путь+Имя+".jpg");
КонецПроцедуры
1 drumandbass
 
08.12.10
11:06
можно и так... есть лишний код... много ..
2 Зеленый Кот
 
08.12.10
11:08
в который раз убеждаюсь, что месье Гинзбург Велик и Лучезарен!
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.