В системах windows работа ведется через powershell. Да да да, придется писать скрипты, и не всегда у вас это будет получаться быстро)) Инструкций на «винду» довольно мало, чаще вы будете натыкаться на linux подобные команды и полностью не родной язык статей (английский). Немного спасает ситуацию ImageMagick, он более популярен и команды между программами схожи в некоторых местах, но все это не отменяет попадания в тупик, где вот не работает и все….
Первое, с чем столкнулся, это установка самой программы, зайдя на офф сайт, нас перекинет на «sourceforge.net» и выбрав версию для windows, мы скачиваем «.exe».
Выбираем понравившуюся, мне приглянулась 1.3.42, скачиваем и устанавливаем.
Далее нам нужны непосредственно скрипты и понимание, как их писать. Начнем с простого, в большинстве инструкций есть команды для проверки того, что GM установился и работает. Например, такие:
gm convert logo: logo.miff
gm convert logo.miff win:
Чето не работает, да…. Скривив лицо от недоумения, тут я и остановился, когда пытался все сделать в первый раз, но если прописать прямой путь до exe…
& 'C:\Program Files\GraphicsMagick-1.3.42-Q8\gm.exe' convert logo: logo.miff
& 'C:\Program Files\GraphicsMagick-1.3.42-Q8\gm.exe' convert logo.miff win:
Появилась жабка, значит, программа действительно установлена и работает. Если вы все же нацелены что-то автоматизировать с помощью этого инструмента, создание скрипта для конечной работы может занять очееееень немалый срок, как бы все просто ни выглядело.
По ссылкам ниже, вы найдете ОФИЦИАЛЬНУЮ документацию, с которой вам придется жить)
http://www.graphicsmagick.org/GraphicsMagick.html
http://www.graphicsmagick.org/utilities.html
Ниже скопировал переведенное описание команд:
Animate - отображает анимацию (например, GIF-файл) на дисплее любой рабочей станции, на которой запущен X-сервер.
Batch - запуск выполняет произвольное количество служебных команд (например, convert) в виде простого линейного пакетного сценария, чтобы повысить эффективность выполнения и/или разрешить использование в качестве подчиненного совместного процесса под управлением произвольного сценария или программы.
Benchmark - выполняет одну из других служебных команд (например, convert) в течение заданного количества итераций или времени выполнения и сообщает о времени выполнения и другой информации для профилирования, такой как загрузка процессора. Benchmark предоставляет различные режимы работы, включая выполнение команды с различным количеством потоков и альтернативные форматы отчетов, такие как значения, разделенные запятыми (CSV).
Compare - сравнивает два изображения и выдает статистику различий в соответствии с указанными показателями и/или выводит изображение с визуальным представлением различий. Это также может использоваться для проверки сходства изображений в определенном диапазоне и по указанному показателю, возвращая значение истинности в исполняющую среду.
Composite - объединяет изображения (смешивает или сливает воедино) для создания новых изображений.
Conjure - интерпретирует и выполняет сценарии на языке сценариев Magick Scripting Language (MSL).
Convert - преобразует входной файл, использующий один формат изображения, в выходной файл с таким же или отличающимся форматом изображения, применяя произвольное количество преобразований изображений.
Display - это независимое от архитектуры компьютера средство обработки изображений и отображения. Он может отображать изображение на любом дисплее рабочей станции, работающем под управлением X-сервера.
Identify - описывает формат и характеристики одного или нескольких файлов изображений. Программа также сообщает, является ли изображение неполным или поврежденным.
Import - считывает изображение из любого видимого окна на X-сервере и выводит его в виде файла изображения. Вы можете захватить одно окно, весь экран или любую прямоугольную часть экрана.
Mogrify - преобразует изображение или последовательность изображений. Эти преобразования включают масштабирование изображения, поворот изображения, уменьшение цветопередачи и другие. Преобразованное изображение перезаписывает исходное изображение.
Montage - создает композицию путем объединения нескольких отдельных изображений. Изображения помещаются в виде мозаики на составном изображении, при этом название изображения может быть указано непосредственно под отдельным фрагментом.
Time - выполняет подкоманду и сообщает о пользователе, системе и общем затраченном времени выполнения.
Version - сообщает о версии GraphicsMagick, максимальной глубине выборки, уведомлении об авторских правах, поддерживаемых функциях и параметрах, использованных при создании программного обеспечения.
Для решения нашей задачи интересна команда Composite, синтаксис ее выглядит следующим образом:
gm composite [ options ... ] change-image base-image [ mask-image ] output-image
Готовый скрипт выглядит уже вот так:
& 'C:\Program Files\GraphicsMagick-1.3.42-Q8\gm.exe' composite -gravity northwest C:\usr\логотип.png C:\usr\начальноеизображение.png C:\usr\конечноеизображение.png
& 'C:\Program Files\GraphicsMagick-1.3.42-Q8\gm.exe' composite – путь до исполняющего файла и команда GM для выполнения
-gravity northwest – параметр, их может быть несколько, этот же указывает сторону света для позиционирования наложение одной фотографии на другую.
C:\usr\логотип.png – путь до логотипа, должен быть в папке
C:\usr\начальноеизображение.png – путь до изображения на которое будут накладывать логотип, должно быть в папке
C:\usr\конечноеизображение.png – путь и имя итогового изображения, создастся по указанному пути
Итак, попробуем применить полученные знания:
& 'C:\Program Files\GraphicsMagick-1.3.42-Q8\gm.exe' composite -gravity northwest C:\usr\logo1c.png C:\usr\костыли.png C:\usr\1скостыли.png

Оно работает, но немножечко не так, как нам хотелось. Сравним лого и наше фото, увидим значительную разницу в размере в пикселях нашей фотографии. У нас несколько вариантов, уменьшить лого до более маленького разрешения, сопоставимого с фото\дописать в скрипте преобразование к нужному размеру.
Но для того, чтобы понять, что нам добавить\изменить, нужно найти правильный параметр. И тут нас тоже поджидает подстава. В одной документации под наши нужды подходят либо –resample либо –density, но нет, они не работают так, как нужно там))) А вот уже в другой есть такой параметр: -resize. Используем его в скрипте:
& 'C:\Program Files\GraphicsMagick-1.3.42-Q8\gm.exe' composite -gravity northwest -resize 600x600 C:\usr\logo1c.png C:\usr\костыли.png -resize 600x600 C:\usr\1скостыли.png
Новый параметр сразу в 2 местах.
composite -gravity northwest -resize 600x600 C:\usr\logo1c.png – все это относится к логотипу, который мы будем накладывать на нашу фотографию, лого теперь ужмется/увеличится до 600х600 пикселей.
C:\usr\костыли.png -resize 600x600 – это уже относится к изображению, которое мы обрабатываем, оно также изменит свои размеры.
Как мы видим, теперь все помещается «друг в друга», можем сделать действительно водный знак, еще уменьшив разрешение логотипа.
& 'C:\Program Files\GraphicsMagick-1.3.42-Q8\gm.exe' composite -gravity northwest -resize 200x200 C:\usr\logo1c.png C:\usr\костыли.png -resize 600x600 C:\usr\1скостыли.png
Вуаля, вы великолепны. Написав скрипт под свои нужды\задачи, вы можете автоматизировать какой-либо процесс обработки фотографий.
Что касательно работы с 1С, тут также имеются нюансы. Например, если скрипт не будет выглядеть вот так с переносами, вы замучаетесь с тем, что он не работает. Далее нюанс в том, что пока идет обработка фото, постоянно будет всплывать окно powershell, оно-то, конечно, сразу закроется, но работать за компом в этот момент не сможете….
Вот моя реализация текста скрипта в 1С, под мои задачи.
ТекстСкрипта.УстановитьТекст("& 'C:\Program Files\GraphicsMagick-1.3.42-Q8\gm.exe' "
+ ""
+ "composite -gravity northwest "
+ "C:\usr\logo.png "
+ ""
+ путьдофайла
+ " "
+ ""
+ путьдофайла
+ ""
);
ТекстСкрипта.Записать(ИмяСкрипта, КодировкаТекста.UTF8);
Так же выкладываю обработку, которую НЕОБХОДИМО ДОДЕЛАТЬ ПОД СЕБЯ. Еще раз, обработка, вероятно, не запустится сама по себе в вашей базе, если понимаете, о чем я ;) В ней совсем немного буков, кто хочет разобраться, сможет за пару часов, но в свое время на ее создание было потрачено немало часов работы, и прошу уважать этот труд. Обработка представляет собой форму.
Для тех, у кого нет возможности скачать обработку, но очеееень хочется, принцип работы: в табличную часть заполняются (ссылка на фото номенклатуры, сама номенклатура). По кнопке «выполнить» из 1С фото скачивается в папку на ваш комп, далее фото обрабатывается логотипом с помощью скрипта, и обработанное фото загружается обратно в 1С, замещая собой старое. Все это работало в режиме тонкого клиента, в сервисе 1С ГРМ, конфа УТ 11.5.
Все межгалактические чемпионы по 1С могут оставить комментарии, как бы они решили эту задачу. Для людей более приземлённых, надеюсь, эта статья была полезна. Даже если сейчас вы не ищете это решение, вы будете знать, что в каком-то виде оно существует. Можете задавать вопросы про обработку/водяные знаки/свои варианты реализации, высока вероятность, что я на них отвечу.
Всем спасибо за внимание!!!
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.22.117
Вступайте в нашу телеграмм-группу Инфостарт