Перестал работать ImageMagick на новых платформах

1. Shaldryn 15.04.21 11:28 Сейчас в теме
Добрый день, подскажите пожалуйста, в КА 1.1 есть внешняя обработка для работы с изображениями, она использует COM++ библиотеку Image Magick, так вот на 8.3.13.1926 платформе работает исправно, перешли на 8.3.16, пытался и на 8.3.18 выдает ошибки. Причем некоторые команды воспринимает, а другие нет...

Код исходный, работающий на 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:


Код поправленный для 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);
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Shaldryn 15.04.21 12:02 Сейчас в теме
(2) эту ссылку я знаю, там что то есть по этому поводу?
3. Leon75 15.04.21 11:58 Сейчас в теме
Права на диск D учетке службы.
5. Shaldryn 15.04.21 12:04 Сейчас в теме
(3) Я локально запускаю 1С от имени администратора, или надо еще где то прописать? Без некоторых команд код же работает, значит права есть...
6. Leon75 15.04.21 15:10 Сейчас в теме
(5)
Без некоторых команд код же работает, значит права есть...

Если обратите внимание на сообщение об ошибке, то dll создает(вернее пытается читать созданные) какие-то временные файлы.
В других методах он может их не создавать и не обращаться.
7. Shaldryn 15.04.21 16:10 Сейчас в теме
(6) Да, но файлы создает 1С и потом с помощью dll изменяет размеры и все такое. Поэтому обращение идет во всех методах. Просто я локально установил две платформы и на них протестил, на одной работает, на другой нет. Я не мог же по разному их установить...

Пока костыльно победил через ЗапускПриложения(). Но заменил WScript.Shell, чтобы не моргало окно исполнения.

У меня такое ощущение что после 8.3.14 такая тенденция пошла, они же тоже эту библиотеку в платформу внедрили с этого релиза...
9. Leon75 15.04.21 16:17 Сейчас в теме
(7)
Да, но файлы создает 1С и потом с помощью dll изменяет размеры и все такое.

Файлы создает dll, будучи com или нативной компонентой. Обращение может идти не во всех методах.
11. Shaldryn 15.04.21 17:03 Сейчас в теме
(9) да я понимаю к чему вы клоните, но я проверял, не в этом дело. Он все картинки в кэш свой записывает, если не поместился то в памяти держит, а если и туда не поместился то на диск пишет. Это на сколько я понял документацию к нему.
8. Shaldryn 15.04.21 16:15 Сейчас в теме
Еще странно то, что я не вижу свой текст вопроса, это что за нововведение, только я не вижу или все?
10. Leon75 15.04.21 16:18 Сейчас в теме
(8)Хотел спросить куда пропало описание вопроса.
12. Shaldryn 15.04.21 17:04 Сейчас в теме
(10) оказывается не желательно изменять описание после публикации, модераторы не видят его снова
13. Shaldryn 15.04.21 17:07 Сейчас в теме
Маленько ошибся кодом, там более простой код без указания каталога, так как OLE объект регистрируется
Попытка
		WshShell = Новый COMОбъект("WScript.Shell");
	Исключение
		Предупреждение("Невозможно подключить модуль выполнения скриптов");
	КонецПопытки;

.......

WshShell.Run("magick " + ИмяФайла + " -resize " + РазмерСПолями + " -size " + РазмерСПолями + " -quality " + КачествоКартинки + " xc:white +swap -gravity center -composite " + ИмяФайла, 0, 1);

Показать
14. METAL 290 30.11.22 19:46 Сейчас в теме
А как с помощью ImageMagick обрезать фото с боков по 10% с каждой стороны (то есть по вертикали разрешение останется прежним, а по горизонтали уменьшится на 20%)?
15. Shaldryn 03.12.22 20:56 Сейчас в теме
(14) дока в помощь, поищите там нужную вам функцию.)
https://imagemagick.org/Usage/crop/
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот