Имя: Пароль:
1C
1С v8
Изменить разрешение/размер изображения в командной строке/средствами 1С.
0 cube033
 
26.04.13
09:15
За недолгий опыт 1с программирования и общения на Мисте - успел поверить, что решить можно любую задачу. Это такая приятная мысль, и неужели в  этой ситуации никак не обойтись без откровенных костылей?

Полную задачу описывать не буду. Но одна из подзадач - администрировать БД сайта из 8.1 УПП. Подподзадача - работать с изображениями номенклатуры.
Добавлен механизм присваивания нескольких изображений, благодаря Мисте красиво открывается/закрывается SSH туннель, Все изображения сразу отправляются по FTP на сервер,а адреса картинок в БД сайта. Но со стороны изготовителя сайта, поступило довольно логичное предложение: "Почему бы не выгружать по ФТП сразу Превьюшки?"

Да только где их взять? Знаете ли вы способ, как программно создать уменьшенную копию изображения? Может утилитки какие-нибудь?

Знаю, что похожая тема уже была, но там одна толковая ссылка, но по ней только реклама, да вирусы (все поудалял, но до сих пор раз в час ссылки в браузере произвольно открываются)
1 Godofsin
 
26.04.13
09:16
погугли внешние компоненты, их куча всяких по работе с изображением
2 Wobland
 
26.04.13
09:17
ЗапуститьПриложение тебе в помощь
3 Wobland
 
26.04.13
09:17
или КомандаСистемы
4 cube033
 
26.04.13
11:35
Решено!!!

Скачиваем и устанавливаем GFLAx.(Я качал отсюда: http://www.softpedia.com/progDownload/GFLAx-Download-179932.html)
Регистрируем в Windows. У меня возникала ошибка, в поддержке Майкрософт прочитал, что dll нужно класть сюда: C:\Windows\SysWOW64 - естественно нужно учитывать ОС - у меня Windows8x64.
Открываем CMD.exe с правами администратора и набираем: regsrv32 C:\Windows\SysWOW64\GFLAx.dll

А дальше все просто - комплекте с программой идет полезный Хелп со свойствами и методами на Англ.
В моем примере задача, чтобы ни одно измерение превьюшки не превышало 250 пикселей.


ИмяФайла = "C:\Users\cube0_000\Pictures\images\komp.jpg";
   GFLAx = Новый COMОбъект("GFLAx.GFLAx");
   GFLAx.LoadBitmap(ИмяФайла);
   ШиринаИзо = GFLAx.Width;
   ВысотаИзо = GFLAx.Height;
   Если ШиринаИзо>ВысотаИзо Тогда
       Делитель=ШиринаИзо/250;
   Иначе
       Делитель=ВысотаИзо/250;    
   КонецЕсли;
   Делитель = ?(0,1,Делитель);
   ШиринаИзо = ШиринаИзо/Делитель;
   ВысотаИзо = ВысотаИзо/Делитель;
   GFLAx.Resize(Цел(ШиринаИзо),Цел(ВысотаИзо));
   GFLAx.SaveBitmap("C:\Users\cube0_000\Pictures\images\komp303.jpg");
5 oleg_km
 
26.04.13
11:53
Есть еще WIA
6 эцп
 
26.04.13
11:59
Есть еще ImageMagic
7 palpetrovich
 
26.04.13
12:10
(4) а это "Делитель = ?(0,1,Делитель);" вообще работает?
8 palpetrovich
 
26.04.13
12:14
+7 работает блин, ...и нафига я пишу "Делитель = ?(Делитель=0,1,Делитель)"