Внешняя компонента Image Magick для базовых операций над картинками

06.09.21

Разработка - Разработка внешних компонент

Внешняя компонента Image Magick для базовых операций над картинками. Реализованы функции: Rotate, Flip, Flop, Enhance, Sharpen, Oil, AutoOrient

Скачать файлы

Наименование Файл Версия Размер
Обработка подключения внешней компоненты
.epf 8,14Kb
14
.epf 1.0.1 8,14Kb 14 Скачать
:Внешняя компонента Image Magick для х86 систем Windows
.dll 56,00Kb
4
.dll 1.0.1 56,00Kb 4 Скачать
: :Внешняя компонента Image Magick для х64 систем Windows
.dll 71,50Kb
9
.dll 1.0.1 71,50Kb 9 Скачать

Весь функционал. кроме AutoOrient, работает через строки Base64, передаваемые в компоненту и возвращаемые из нее.
Реализованы методы:

Rotate (Поворот на определенный градус)
Flip (Отражение по вертикали)
Flop (Отражение по горизонтали)
Enhance (Уменьшение шума)
Sharpen (Увеличение четкости)
Oil (Имитация картины маслом)

И метод AutoOrient, которая работает не через строку Base64, а просто принимает на вход путь к картинке и перезаписывает нормализованное фото.

Подробнее о методах можно почитать в документации Image Magick С++.

Русскоязычные наименования методов постарался сделать максимально идентичными английским, буквально дословными. Описание методов и принимаемые на вход типы данных:

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Где:
// ПутьККартинке - путь к картинке на жестком диске
//
// В результате старая картинка будет затерта и поверх записана новая

ПутьККартинке = "E:\cat.jpg";
Компонента.АвтоОриент(ПутьККартинке);

// Где: 
// ДвоичныеДанные - Двоичные данные картинки
// ГрадусПоворота - градус на который необходимо повернуть изображение
// ОбработаннаяКартинка  - двоичные данные в формате Base64
//
// В данном случае рекоммендуется вводить кратные 90 углы, в связи с тем, что при повороте
// на углы не кратные 90 размер картинки увеличивается и появляются пустые поля вокруг нее
// (данный вопрос пока не решил)

КартинкаВBase64 = Base64Строка(ДвоичныеДанные);
ГрадусПоворота = 90;
ОбработаннаяКартинка = Компонента.Повернуть(КартинкаВBase64, ГрадусПоворота);


// Все остальные операции идентичные друг другу. 
// Где:
// ДвоичныеДанные - двоичные данные картинки, 
// ОбработаннаяКартинка - двоичные данные в формате Base64

КартинкаВBase64 = Base64Строка(ДвоичныеДанные);
ОбработаннаяКартинка = Компонента.ОтразитьПоВертикали(КартинкаВBase64);

КартинкаВBase64 = Base64Строка(ДвоичныеДанные);
ОбработаннаяКартинка = Компонента.ОтразитьПоГоризонтали(КартинкаВBase64);

КартинкаВBase64 = Base64Строка(ДвоичныеДанные);
ОбработаннаяКартинка = Компонента.Улучшить(КартинкаВBase64);

КартинкаВBase64 = Base64Строка(ДвоичныеДанные);
ОбработаннаяКартинка = Компонента.Заострить(КартинкаВBase64);

КартинкаВBase64 = Base64Строка(ДвоичныеДанные);
ОбработаннаяКартинка = Компонента.Масло(КартинкаВBase64);

// На всякий пожарный, раскодируем картинку обратно в двоичные данные следующим образом:

КартинкаВДвоичныхДанных = Base64Значение(ОбработаннаяКартинка);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Исходники: https://github.com/popeless/addin-image-magick

То что написано в ReadMe на гитхабе:

  • (c) Popeless
  • Добавлены библиотеки Image Magick и несколько методов
  • Лишние методы удалены
  • Библиотеки в команде pragma comments при сборке должны быть в папке, где собирается библиотека SampleAddIn.lib
  • Библиотеки и хедеры взяты из установщика Image Magick для Windows
  • Эту библиотеку необходимо компилировать в Release режиме
  •  
  • Спасибо Infactum за шаблон!

В файлах немного описал, как быстрее скомпилировать свои библиотеки. Компиляция под платформы не являющиеся Windows - не рассматривал.

На эту компоненту вдохновило видео канала "Веселый 1С"

Половину работы сделал за меня шаблон, предоставленный одним из участников сообщества, за что ему большая благодарность. Ссылка на шаблон и собственно гит.

 

P.S. Если вы найдете методы, которые было бы интересно реализовать, или вы предложите мне альтернативу моему коду, для улучшения реализации функционала - прошу вас не стесняться и писать мне в личные сообщения, либо в комментарии.

обработка компонента imagemagick картинки фото

См. также

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52113    34    69    

43

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61799    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54407    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16700    21    4    

35

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

2400 руб.

12.05.2020    26247    131    99    

83

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    44981    117    64    

60

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35083    104    123    

111

Мастер создания внешних компонент 1С (технология COM) для DELPHI 6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3

Разработка внешних компонент Платформа 1С v8.3 Платные (руб)

Средство для сверхбыстрой разработки внешних компонент 1С:Предприятия 7.7 и 8 по технологии COM на всех версиях DELPHI, начиная с 6.

2000 руб.

28.03.2013    54004    35    14    

68
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 302 30.08.21 10:49 Сейчас в теме
Хм, вот думаю и гадаю, зачем на гитхабе делать описание на вражеском языке ?
Кроме русскоязычных кто-то еще заинтересуется данной разработкой ?
2. ldmonster 97 30.08.21 13:05 Сейчас в теме
В перспективе планировал расписать на русском в данной статье. При разработке стараюсь выдерживать единый стиль языка и текста.
3. SLV66 20.01.22 10:24 Сейчас в теме
Добрый день.
Нельзя ли во временном хранилище сделать автоориентацию. Без использования сохранения на диск?
4. ldmonster 97 20.01.22 10:49 Сейчас в теме
(3) Здравствуйте.

Эта функция не имеет смысла во временном хранилище. Во всяком случае не для моих нужд.

У меня была проблема, что при скачивании с амазон клауд были битые параметры у файлов. В данном случае компонента именно это и делает.

На гитхабе у меня выложены все исходники, можете переделать если необходимо. Код полностью открыт.
5. SLV66 21.01.22 08:12 Сейчас в теме
Скачал для изучения компоненту 64 и обработку. Указываю в путь до компоненты - пуск.
Не удалось подключить компоненту
{ВнешняяОбработка.ТестВКImageMagickAddin.Форма.Форма.Форма(5)}: ВызватьИсключение "Не удалось подключить компоненту";
6. ldmonster 97 21.01.22 09:41 Сейчас в теме
(5) Попробуйте изучить как работают компоненты и как они подключаются. Скорее всего у вас где-то ошибка.

Компонента это dll файл в данном случае, который отвечает на api запрос от 1с. Я приложил исходники, чтобы любой мог изучить вопрос и скомпилировать под любую систему (благодаря шаблону это реально)
7. SLV66 21.01.22 09:47 Сейчас в теме
Дело в том что я ваш пример взял а он не рабочий? Полагаю что тестовый пример должен из "коробки" работать.
8. ldmonster 97 21.01.22 10:27 Сейчас в теме
(7) если вы не смогли подключить компоненту, это не значит, что пример не рабочий.
В отличие от тех, кто обычно выкладывает компоненты я приложил исходники и инструкции по компиляции. Если вы понимаете в этом что-то то всегда можете посмотреть внутрь и убедиться.
Для начала повторюсь, изучите как работают компоненты, и что требуется для взаимодействия с image magick.
Не стоит делать поспешных выводов, основываясь на подобной ошибке. Постарайтесь понять в связи с чем на вашей машине происходит данная ошибка.

P.s. я не продаю техническую поддержку как многие, кто продают свои решения. Просто выложил скомпилированные исходники. Если вы хотите полноценного сервиса, можете заключить договор с компанией, которая скомпилирует и установит вам самостоятельно.
thelastairbender; +1 Ответить
Оставьте свое сообщение