Имя: Пароль:
1C
1С v8
Как повернуть картинку на 90 градусов на сервере?
0 Пират
 
26.04.13
12:18
Предыстория...
1. Управляемое приложение.
2. Компонента AddIn.КартинкаШтрихкода.Barcode не хочет поворачивать штрих-код на 90 градусов. Не получается этого добиться - выдает какую-то ерунду.

Результатом работы компоненты являются двоичные данные (картинка штрих-кода).
Возникла мысль сохранить её во временный каталог и обработать вот этим скриптом на сервере:

Функция ПовернутьИзображение(фКартинки,УголПоворота)
   //Ресайз файла картинки
   Скрипт = "
   |Function RotateImage(ImageFile,Angle,ResultFile)
   |Dim Img 'As ImageFile
   |Dim IP 'As ImageProcess
   |Dim objFSO
   |On Error Resume Next
   |
   |Set Img = CreateObject(""WIA.ImageFile"")
   |Set IP = CreateObject(""WIA.ImageProcess"")
   |Set objFSO = CreateObject(""Scripting.FileSystemObject"")
   |
   |Img.LoadFile ImageFile
   |
   |IP.Filters.Add IP.FilterInfos(""RotateFlip"").FilterID
   |IP.Filters(1).Properties(""RotationAngle"") = Angle
   |
   |Set Img = IP.Apply(Img)
   |
   |If objFSO.FileExists(ResultFile) Then
   |    objFSO.DeleteFile ResultFile
   |End If
   |If Err.Number = 0 Then
   |    Img.SaveFile ResultFile
   |    RotateImage = 1
   |Else
   |    RotateImage = 0
   |End if
   |End function
   |";
   ИспСкрипт= Новый ComОбъект("MSScriptControl.ScriptControl");
     ИспСкрипт.Language="vbscript";
     ИспСкрипт.AddCode(Скрипт);
     ВремФайл = КаталогВременныхФайлов() + "TempWIA1Cimagefile.bmp";
   Рез = ИспСкрипт.Run("RotateImage",фКартинки,УголПоворота,ВремФайл);
   Если Рез Тогда
       К = Новый Картинка(ВремФайл);
   Иначе
       Предупреждение("Не удалось загрузить картинку!");
       К = Новый Картинка(ВремФайл);
   КонецЕсли;
   Возврат К;

КонецФункции

В режиме обычного приложения это работает. Но на сервере не хочет работать. Выдает сообщение ошибки на то, что не найден файл. Видать проблемы с доступом.

Как еще можно решить проблему?
1 XLife
 
26.04.13
12:19
1. положить картинку на сервер
2. повернуть на 90 градусов
3. профит!
2 Пират
 
26.04.13
12:20
(2) не работает почему-то на сервере.
3 MSII
 
26.04.13
12:21
Прочитал как "повернуть на 90 градусов на север", задумался.
4 Пират
 
26.04.13
12:24
Видимо у скрипта нет прав на папку, куда записать можно файл.

Какую папку на серваке можно указать, которая есть и в которую у скрипта и у сервера приложений будет доступ?
5 Пират
 
26.04.13
12:25
Вернее у скрипта нет доступа к папкам временных файлов 1С
6 MSII
 
26.04.13
12:25
(4) Сервер приложений запущен под каким-то пользователем. Посмотреть, под каким, дать этому пользователю права на нужную папку.
7 Пират
 
26.04.13
12:26
(6) без этого никак?
8 Пират
 
26.04.13
12:27
Можно, конечно, на клиенте картинку переворачивать, а потом передавать на сервер.

Но это полный изврат.
9 Пират
 
26.04.13
12:28
Может есть еще какие способы перевернуть картинку на сервере или добиться, чтобы штрих код нормально переворачивался на 90 градусов?
10 MSII
 
26.04.13
12:30
(7) Можно еще запуск от имени использовать. Это если проблема действительно в правах, а не в кривом скрипте.