Crop (Обрезка изображений с помощью скрипта Cropper.js) + Drag&Drop&Scale (Перетаскивание и масштабирование изображения)

13.12.22

Разработка - Работа с интерфейсом

Простейший пример реализации Crop изображения с помощью поля html-документа и js-скрипта (Cropper.js) + отдельно функция Drag&Drop + Scale для картинки. Для обычных и управляемых форм. Тестировалось на 18 платформе, должно работать на любой >=14.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
Crop (Обрезка изображений с помощью скрипта Cropper.js) + Drag&Drop&Scale (Перетаскивание и масштабирование изображения)
.epf 265,41Kb
50
50 Скачать бесплатно

Сам crop (обрезка) картинки делается с помощью скрипта Cropper.js, сам скрипт, и исходники на этой странице. Из оригинала вырезаны часть кнопок и добавлен превью-результат. Сделано на платформе 8.3.14.

Масштабирование и Drag&Drop - через стиль картинки и transform.

 

Свои html-странички и их взаимодействие со стилями/скриптами проще всего рисовать в каких-нибудь online-редакторах, типа codepen.io, достаточно просто скопировать исходный код любой html-странички в редактор и там поправить, сразу видя результат.

Для встраивания скрипта в свои формы нужно разместить текст html документа и скриптов/стилей, для этого проще использовать макеты обработки. Для html макет с типом HTML, для js-скриптов - двоичные данные, для стилей и фоновой начальной картинки - просто текст. 

На форму кидается элемент управления ПолеHTML, ему в ПриОткрытии() устанавливается текст html-странички из макета.

Из макетов извлекаются файлы скриптов и записываются во временный каталог:

Процедура ПолучитьСкриптИзДвоичныхДанных(ТекстШаблона,ИмяМакета)
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("js");
    ДанныеМакета(ИмяМакета).Записать(ИмяВременногоФайла);
	ТекстШаблона = СтрЗаменить(ТекстШаблона,"%"+ИмяМакета, ИмяВременногоФайла);
КонецПроцедуры

В самом тексте html странички, просто, через СтрЗаменить() заменяются маркеры на реальные пути к js-файлам.

Аналогично, часть стилей, извлекается из текста макета и заменяется просто текстом.

Фоновая картинка хранится как строка в Base64 в отдельном макете.

В шаблоне html странички это выглядит так:

<style>%Стиль1</style>
<style>%Стиль2</style>

...............

<script src="%Скрипт2"> </script>
<script src="%Скрипт3"> </script>

На выходе, при работе основного скрипта,  "кропнутая" картинка (получается как готовая строка Base64) может быть потом использована в коде где угодно, в данном примере, передается во второе поле html документа, в котором показан простейший скрипт для переноса и масштабирования картинки (может быть использован в своих конфигурациях для показа картинки). 

Масштабирование производится колесом мыши. Само масштабирование реализовано в скрипте через стиль и свойство transform + создание 3-переменных, хранящих x,y координату и масштаб:

<style>
	    .element {
	      --x: 0px;  /* переменная стиля для координаты X перемещения элемента */
	      --y: 0px; /* переменная стиля для координаты Y перемещения элемента */
	      --t: 1;  /* переменная стиля для координаты масштаба элемента */
	      transform: translate(var(--x), var(--y)) scale(var(--t)); /* трансформация элемента сдвиг и масштаб */

В событиях скрипта, меняем эти координаты  - соответственно, меняется положение и масштаб.

В событии движении мыши (mousemove) если нажата левая клавиша меняем x,y координату картинки :

element.style.setProperty('--x', `${e.pageX - startX}px`)
element.style.setProperty('--y', `${e.pageY - startY}px`)

В событии колеса - масштаб:

	var i=1;
		ball.onwheel = function(event) { /* событие колеса мыши */
		   if(event.deltaY > 0) {   /* уменьшаем/увеличиваем шаг масштаба при прокрутке колеса */
		      i -= 0.1;
		   } else {
		      i += 0.1;
		   }
		    ball.style.setProperty('--t', i); /* устанавливаем свойство стиля картинки, которое через transform scale ('--t') изменит размер */

Чтобы поймать событие js-скрипта в 1с, создаем 2 пустых невидимых контейнера в html - странички, в них будем помещать событие кропа (нажатия на соответствующую кнопку) и саму кропнутую картинку в виде строки в Base64.

 

<div id="BufferData" style="display:none"></div>
<div id="EventName" style="display:none"></div>

в основном js-скрипте (макет Скрипт1), просто помещаем кропнутую картинку в этот контейнер:

document.getElementById ("EventName").innerHTML = 'Crop';
document.getElementById ("BufferData").innerHTML = result.toDataURL('image/jpeg');

в самой 1с-ине, в событии поля HTML ПриНажатии(onclick) получаем из этих двух контейнеров содержимое, если это "наше" событие, в данном случае, "Crop", то получаем готовую картинку из контейнера и очищаем его:

 

    ИмяСобытия = Элемент.Документ.getElementById ("EventName").innerHTML;
    Если ИмяСобытия = "Crop" Тогда
        // очищаем содержимое контейнера 
        Элемент.Документ.getElementById ("EventName").innerHTML = "";
        // получаем параметры из контейнера 
        BufferData = Элемент.Документ.getElementById ("BufferData").innerHTML;
    
        //КартинкаСтрокой64 = Сред(BufferData,СтрНайти(BufferData,",")+1); //если нужна картинка кладём её куды ннадо.
        ТекстМакета = ТекстМакета("РезультатHTML");  
        ЭлементыФормы.ПолеHTMLДокумента2.УстановитьТекст(СтрЗаменить(ТекстМакета,"%1", BufferData));//СтрШаблон(ТекстМакета,BufferData); //просто помещаем в шаблон поля кропнутую картинку
    КонецЕсли;    

jscript html crop drag drop transform scale

См. также

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

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

5000 руб.

14.01.2016    55303    17    23    

43

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

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

6000 руб.

16.01.2015    63697    44    59    

82

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

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

2400 руб.

29.06.2020    19548    27    6    

42

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

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10768    7    7    

11

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    20815    mrXoxot    44    

128

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    10301    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    17739    1223    elcoan    53    

125
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bprogs 294 14.12.22 22:11 Сейчас в теме
Хорошая штука этот cropper, можно какие то дизайнерские работы продавать через конфигурацию или как то ее обрабатывать, честно применение не найду этому кропперу, у вас какая задача была?
2. papami 56 15.12.22 12:30 Сейчас в теме
(1) У меня была задача, с применением аналогичного инструмента. Обработку фото делал на C#. Ком. предложение на продажу автомобиля с определенным дизайном, в котором изображение должно быть с определенным соотношением сторон и "скругленные" края. Т.е. машину сфотографировали, а при загрузке в 1С сразу делается приведение к нужному формату.
Оставьте свое сообщение