Перестал работать ImageMagick на новых платформах
Добрый день, подскажите пожалуйста, в КА 1.1 есть внешняя обработка для работы с изображениями, она использует COM++ библиотеку Image Magick, так вот на 8.3.13.1926 платформе работает исправно, перешли на 8.3.16, пытался и на 8.3.18 выдает ошибки. Причем некоторые команды воспринимает, а другие нет...
Код исходный, работающий на 8.3.13:
Ошибка на 8.3.16-8.3.18:
Код поправленный для 8.3.16-18
Остальные команды приводят к ошибкам...
Никто не сталкивался с таким?
UPD:
Через командную строку работает этот же код...
Код исходный, работающий на 8.3.13:
ОбработчикИзображений.Convert(ФайлИзображения, "-quality", КачествоКартинки, "-resize", РазмерСПолями, "-size", РазмерСПолями, "xc:white", "+swap", "-gravity", "center", "-composite", ФайлИзображения);
Ошибка на 8.3.16-8.3.18:
{ВнешняяОбработка.ВыгрузкаИзображений.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (Convert)
ОбработчикИзображений.Convert(ФайлИзображения, "-quality", КачествоКартинки, "-resize", РазмерСПолями, "-size", РазмерСПолями, "xc:white", "+swap", "-gravity", "center", "-composite", ФайлИзображения);
по причине:
Произошла исключительная ситуация (ImageMagickObject.MagickImage.1): convert: 435: UnableToOpenBlob 'xc:white': No such file or directory @ error/blob.c/OpenBlob/3537:
convert: 420: NoDecodeDelegateForThisImageFormat `' @ error/constitute.c/ReadImage/562:
convert: 410: NoSuchImage `D:\TempImagick\42884\42884.jpg' @ error/mogrify.c/MogrifyImageList/8920:
convert: 410: ImageSequenceRequired `-composite' @ error/mogrify.c/MogrifyImageList/8098:
convert: 410: NoImagesDefined `D:\TempImagick\42884\42884.jpg' @ error/convert.c/ConvertImageCommand/3285:
ОбработчикИзображений.Convert(ФайлИзображения, "-quality", КачествоКартинки, "-resize", РазмерСПолями, "-size", РазмерСПолями, "xc:white", "+swap", "-gravity", "center", "-composite", ФайлИзображения);
по причине:
Произошла исключительная ситуация (ImageMagickObject.MagickImage.1): convert: 435: UnableToOpenBlob 'xc:white': No such file or directory @ error/blob.c/OpenBlob/3537:
convert: 420: NoDecodeDelegateForThisImageFormat `' @ error/constitute.c/ReadImage/562:
convert: 410: NoSuchImage `D:\TempImagick\42884\42884.jpg' @ error/mogrify.c/MogrifyImageList/8920:
convert: 410: ImageSequenceRequired `-composite' @ error/mogrify.c/MogrifyImageList/8098:
convert: 410: NoImagesDefined `D:\TempImagick\42884\42884.jpg' @ error/convert.c/ConvertImageCommand/3285:
Код поправленный для 8.3.16-18
ОбработчикИзображений.Convert(ФайлИзображения, "-quality", КачествоКартинки, "-resize", РазмерСПолями, "-size", РазмерСПолями, ФайлИзображения);
Остальные команды приводят к ошибкам...
Никто не сталкивался с таким?
UPD:
Через командную строку работает этот же код...
Попытка
WshShell = Новый COMОбъект("WScript.Shell");
WshShell.CurrentDirectory = КаталогПрограммы;
Исключение
Предупреждение("Невозможно подключить модуль выполнения скриптов");
КонецПопытки;
WshShell.Run(""""+КаталогПрограммы+"\convert.exe"""+" "+""""+ФайлИзображения+""""+
" -resize "+РазмерСПолями+ " " + "-resize "+РазмерСПолями+ " -quality " + КачествоКартинки + " xc:white +swap -gravity center -composite " +
""""+ФайлИзображения+"""",0,1);
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6) Да, но файлы создает 1С и потом с помощью dll изменяет размеры и все такое. Поэтому обращение идет во всех методах. Просто я локально установил две платформы и на них протестил, на одной работает, на другой нет. Я не мог же по разному их установить...
Пока костыльно победил через ЗапускПриложения(). Но заменил WScript.Shell, чтобы не моргало окно исполнения.
У меня такое ощущение что после 8.3.14 такая тенденция пошла, они же тоже эту библиотеку в платформу внедрили с этого релиза...
Пока костыльно победил через ЗапускПриложения(). Но заменил WScript.Shell, чтобы не моргало окно исполнения.
У меня такое ощущение что после 8.3.14 такая тенденция пошла, они же тоже эту библиотеку в платформу внедрили с этого релиза...
Маленько ошибся кодом, там более простой код без указания каталога, так как OLE объект регистрируется
Попытка
WshShell = Новый COMОбъект("WScript.Shell");
Исключение
Предупреждение("Невозможно подключить модуль выполнения скриптов");
КонецПопытки;
.......
WshShell.Run("magick " + ИмяФайла + " -resize " + РазмерСПолями + " -size " + РазмерСПолями + " -quality " + КачествоКартинки + " xc:white +swap -gravity center -composite " + ИмяФайла, 0, 1);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот