GGraphics - внешняя компонента для работы с картинками jpg (jpeg), png, bmp, gif, tif

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

Арт.: 74981

Продано: 70

GGraphics - работа с картинками в 1С
GGraphics - работа с картинками в 1С
GGraphics - работа с картинками в 1С
GGraphics - работа с картинками в 1С

3600 руб.

2500 руб.

Проект имеет следующие премущества:

  1. Не требует установки на каждом компьютере, где будет осуществляться обработка картинок
  2. Прекрасно работает даже с большими изображениями
  3. Скорость работы выше примерно на 40%
  4. Имеет малое потребление памяти
  5. Может работать на сервере

Демонстрация работы

Общие сведения

GGraphics – внешняя компонента для работы с картинками из 1С. Может использоваться для конвертации из одного формата в другой, получения изображения из буфера обмена, изменения размера изображения, поворота (отражения), обрезки, получения размеров, добавления водяного знака, сжатия.

Поддерживаемые операционные системы:
Windows XP, Windows 7,8,10 (x86,x64), Windows Server (x86,x64)

Работает в режимах:
Толстый клиент, Тонкий клиент, Сервер

Поддерживается работа со следующими форматами:
В режиме открытия:

  • bmp
  • jpg
  • png
  • gif
  • tiff

В режиме сохранения:

  • bmp
  • jpg
  • png
  • tiff


Форматы «водяного знака»:

  • bmp
  • jpg
  • png
  • gif

Описание свойств и методов


Свойства:

РазмерИзображения/ ImageSize – размер текущего изображения в формате "Ширина"x"Высота"(например, 300x550). Тип: Строка - Только чтение
Ширина/Width – ширина текущего изображения. Тип: Строка - Только чтение
Высота/Height – высота текущего изображения. Тип: Строка - Только чтение
Формат/Format – формат текущего изображения. Тип: Строка - Только чтение
КоличествоКадров/FrameCount – количество кадров для gif и tiff. Тип: Число - Только чтение
ДвоичныеДанные/ BinaryData – файл в формате jpg без сжатия. Тип: ДвоичныеДанные - Только чтение
Base64 – файл в формате jpg без сжатия представленный в виде строки Base64. Тип: Строка - Чтение и запись
ОписаниеОшибки / ErrorDescription - в случае возникновения ошибки, содержит её описание.

Методы:

1) ПолучитьИзображение / GetImage – получает изображение для обработки (конвертации) из файла или буфера обмена.

Параметры:

  • ИмяФайла - имя открываемого для редактирования файла. Если имя файла пустое, то изображение берется из буфера обмена. Тип: Строка

2) ПолучитьДвоичныеДанные / GetBinaryData – возвращает двоичные данные изображения в указанном формате

Параметры:

  • ТипФайла – формат файла, в котором необходимо вернуть двоичные данные. Тип: Число

Принимает следующие значения:

  • 0 – bmp
  • 1 – jpg
  • 2 – png
  • 3 - tif

3) ПолучитьBase64 / GetBase64 – возвращает данные изображения в указанном формате в виде строки Base64

Параметры:

  • ТипФайла – формат файла, в котором необходимо вернуть данные ихображения. Тип: Число

Принимает следующие значения:

  • 0 – bmp
  • 1 – jpg
  • 2 – png
  • 3 – tif

4) ОбрезатьИзображение / CropImage – обрезает изображение на указанную величину.
Параметры:

  • Лево - количество пикселей (процентов), обрезаемых слева. Тип: Число
  • Право - количество пикселей (процентов), обрезаемых справа. Тип: Число
  • Верх - количество пикселей (процентов), обрезаемых сверху. Тип: Число
  • Низ - количество пикселей (процентов), обрезаемых снизу. Тип: Число
  • ВПроцентах – признак того, что все величины указаны в процентах. Тип: Булево (для 7.7 - 0 и 1) 

5) ОбрезатьПустыеКрая / CropEmptyBorders – обрезает пустые (прозрачные) края изображения.
Параметры:

  • Отступ - количество пикселей, оставляемых в качестве отступа. Тип: Число

6) ПовернутьИзображение / RotateImage – поворачивает (отражает) текущее изображение.

Параметры:

  • ОтразитьПоГоризонтали – признак того, что изображение необходимо отразить по горизонтали. Тип: Булево
  • ОтразитьПоВертикали - признак того, что изображение необходимо отразить по вертикали. Тип: Булево
  • Поворот – поворот изображения (-1 – на 90 градусов против часовой, 1 – на 90 градусов по часовой). Тип: Число

7) ИзменитьРазмерИзображения / ResizeImage – изменяет размер изображения.

Параметры:

  • Ширина – новая ширина для изображения. Тип: Число
  • Высота – новая высота для изображения. Тип: Число
  • Процент – процент на который изменяется размер (если число отрицательное – уменьшение изображения, если положительное - увеличение). Тип: Число
  • СохранятьПропорции – признак того, что при изменении размера необходимо сохранить пропорции изображения. Если указано, что необходимо сохранить пропорции, то методу передается только один из параметров (либо шинира, либо высота), а второй параметр принимает нулевое значение. Тип: Булево (для 7.7 - 0 и 1).

8) ДобавитьВодянойЗнак / AddWatermark – добавляет на текущее изображение «водяной знак».
Параметры:

  • ИмяФайла – файл, который будет использоваться в качестве водяного знака. Тип: Строка
  • Позиция – позиция на текущем изображении, где необходимо разместить водяной знак. Тип: Число

Принимает следующие значения:

0 – сверху слева
1 – сверху центр
2 – сверху справа
3 – по центру
4 – снизу слева
5 – снизу центр
6 – снизу справа

  • Прозрачность – процент прозрачности накладываемого изображения. Изменяется от 0 до 100. При 100 – изображение непрозрачно. Тип: Число

9) РазмытиеПоГауссу/ GaussianBlur – применяет к текущему изображению эффект «РазмытиеПоГауссу».
Параметры:

  • Радиус – радиус размытия от 0 до 500. Тип: Число

10) НерезкоеМаскирование/ UnsharpMask – применяет к текущему изображению эффект «Нерезкое маскирование».
Параметры:

  • Радиус – радиус размытия от 0 до 500. Тип: Число
  • Интенсивность – интенсивность эффекта от 0 до 500. Тип: Число
  • Порог – порог срабатывания от 0 до 255. Тип: Число

11) УвеличитьРезкость/ Sharpen – увеличивает резкость текущего изображения.
Параметры:

  • Интенсивность – интенсивность эффекта от 0 до 100. Тип: Число

12) СделатьЧерноБелым / CreateBlackAndWhite – делает текущее изображение черно-белым (оттенки серого)

Параметры: Нет

13) Сепия/ Sepia – применяет к текущему изображению эффект «Сепия».
Параметры:

  • Интенсивность – интенсивность эффекта от 0 до 255. Тип: Число

14) ЗаполнитьПрозрачность / FillTransparent – заполняет прозрачные участки текущего изображения заданным цветом.
Параметры:

  • R – интенсивность красного цвета от 0 до 255. Тип: Число
  • G – интенсивность зеленого цвета. Тип: Число
  • B – интенсивность синего цвета. Тип: Число
  • СохранятьПолупрозрачность – при заполнении полупрозрачные участки будут залиты указанным цветом, но степень их прозрачности будет сохранена. Тип: Булево

15) УстановитьЦветТекста / SetTextColor – задает цветовые параметры для текста, добавляемого на изображение методом ДобавитьТекст / AddText.

Параметры:

  • R – интенсивность красного цвета от 0 до 255. Тип: Число
  • G – интенсивность зеленого цвета. Тип: Число
  • B – интенсивность синего цвета. Тип: Число
  • A – интенсивность альфа-канала (прозрачность) от 0 до 255. Тип: Число

16) УстановитьПараметрыТекста / SetTextParams – задает параметры шрифта для текста, добавляемого на изображение методом ДобавитьТекст / AddText.

Параметры:

  • ИмяШрифта – имя шрифта, установленного в системе. Тип: Строка
  • РазмерШрифта – размер шрифта в пунктах. Тип: Число
  • Жирный – признак полужирного шрифта. Тип: Булево
  • Курсив – наклонный шрифт. Тип: Булево
  • Подчеркнутый –подчеркнутый шрифт. Тип: Булево

17) ДобавитьТекст / AddText – добавляет на текущее изображение заданный текст.

Параметры:

  • X – координата по X для добавляемого текста. Тип: Число
  • Y – координата по Y для добавляемого текста. Тип: Число
  • Текст – текст, добавляемый на изображение. Тип: Строка

18) УстановитьТекущийКадр / SetAvtiveFrame – меняет текущий активный кадр изображения (для форматов gif и tiff).

Параметры:

  • НомерКадраномер кадра изображения, который необходимо сделать активным. Тип: Число

19) СохранитьИзображения / SaveImage – сохраняет изображение в файл на диске.

Параметры:

  • ИмяФайла – имя файла для сохранения на диске. Тип: Строка
  • ТипФайла – формат сохраняемого файла. Тип: Число

Принимает следующие значения:

  • 0 – bmp
  • 1 – jpg
  • 2 – png
  • 3 - tif
  • Сжатие – степень сжатия для файлов формата jpg. Тип: Число
  • УдалятьОригинал – признак того, что необходимо удалить оригинальный файл. Требуется, например, при конвертации из одного формата в другой. Тип: Булево (для 7.7 - 0 и 1)

 

20) ИзменитьЯркость / ChangeBrightness – меняет яркость текущего изображения.

Параметры:

  • Яркостьзначение яркости от -100 до 100. Тип: Число

21) ИзменитьКонтрастность / ChangeContrast – меняет контрастность текущего изображения.

Параметры:

  • Контрастностьзначение контрастности от -100 до 100. Тип: Число

22) Закрыть / Close – высвобождает память, занимаемую текущим изображением.

 

Примеры кода

1) Обработка изображения на сервере

&НаСервере
Функция СоздатьМиниатюру(ИсходныйФайл, ВыходнойФайл)

	ВысотаМиниатюры = 100;

	ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаGGraphics", "Graphics", ТипВнешнейКомпоненты.Native);
			
	Если ПодключениеВыполнено Тогда					
		GGraphics = Новый("AddIn.Graphics.GGraphics");			
		GGraphics.ПолучитьИзображение(ИмяФайла);
		GGraphics.ИзменитьРазмерИзображения(0 , ВысотаМиниатюры, 0, Истина);
		GGraphics.СохранитьИзображение(ВыходнойФайл, 1, 100, Ложь);
		GGraphics.Закрыть();
	КонецЕсли;	
	
КонецФункции

 2) Обработка изображения на клиенте

&НаКлиенте
Функция ВозможноНанестиВодянойЗнак()

	РасположениеКомпоненты = "ОбщийМакет.КомпонентаGGraphics";
	ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(РасположениеКомпоненты, "Graphics", ТипВнешнейКомпоненты.Native);
			
	Если НЕ ПодключениеВыполнено Тогда					
		УстановитьВнешнююКомпоненту(РасположениеКомпоненты);
		ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(РасположениеКомпоненты, "Graphics", ТипВнешнейКомпоненты.Native);		
	КонецЕсли;	
	
	Возврат;
	
КонецФункции

&НаКлиенте
Процедура НанестиВодянойЗнак(ИмяФайла, ФайлВодяногоЗнака)

	Если ВозможноНанестиВодянойЗнак() Тогда
		GGraphics = Новый("AddIn.Graphics.GGraphics");			
		GGraphics.ПолучитьИзображение(ИмяФайла);
		GGraphics.ДобавитьВодянойЗнак(ФайлВодяногоЗнака, 3, 100);
		GGraphics.СохранитьИзображение(ИмяФайла, 1, 100, Ложь);
		GGraphics.Закрыть();
	КонецЕсли;

КонецПроцедуры

3) Обработка исключений

Попытка
   GGraphics.ПолучитьИзображение(ИмяФайла);
Исключение
   Сообщить(ОписаниеОшибки() + ": " + GGraphics.ОписаниеОшибки, СтатусСообщения.Внимание);
КонецПопытки

Демонстрационная версия


В демонстрационной версии продукта только одно ограничение - все получаемые изображения имеют по центру надпись "DEMO".

Техническая поддержка

Срок бесплатной технической поддержки составляет 12 месяцев, начиная с даты приобретения продукта.

Статистика:
Просмотры 75747
Загрузки 70
Рейтинг 188
Создание 02.09.10 12:43
Обновление 08.09.21 15:48
№ Публикации 74981
Характеристики:
Теги

графика изображение редактирование картинка водяной знак масштабирование обрезание graphics image photo двоичные данные photoshop jpg jpeg bmp gif tiff bitmap

Рубрики Разработка внешних компонент
Кому Программист
Тип файла Компонента, плагин (dll, vbs,..)
Платформа Платформа 1С v8.3
Конфигурация Конфигурации 1cv8
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Платные (руб)
Код открыт Нет
Наименование Файл Версия Размер
ТестGGraphics.zip .zip 20210709 4,80Mb 365 Скачать
97. mzelensky 18.12.13 11:23 Сейчас в теме
(96) Спасибо! Постараюсь не пропустить обновление обработки.
(97) Обновил. Проверьте, пожалуйста
98. mzelensky 18.12.13 11:28 Сейчас в теме
И кстати еще вопрос. Можно ли как-то пересохранить файл формата pdf картинку (например в jpg или bmp)?
99. Техподдержка 18.12.13 11:43
(98) Нет, так сделать нельзя
100. Johny_v 21.03.14 15:35 Сейчас в теме
Добрый день.
Хорошая компонента. Можно изменить порядок открытия изображения из буфера обмена?
Было бы правильнее не выводить окно с информацией "В буфере изображение", а сделать отдельный метод который будет проверять формат буфера обмена или просто возвращать текущий формат буфера.
Тогда можно будет самому проверить нужный формат при открытии.
(100) Видимо это старая версия. Сейчас никаких надписей не выводится. Просто вызываете метод ПолучитьИзображение("") и работаете дальше с ним
102. Johny_v 21.03.14 17:25 Сейчас в теме
(101) Ясно, спасибо, скачаю новую версию
106. dmbal 31.05.14 04:35 Сейчас в теме
Не знаю, на сколько будет востребовано, но однозначно плюсую! Отличная разработка!
107. realchel 19.08.14 12:33 Сейчас в теме
Привет. Твоя внешняя компонента для работы с графикой по технологии COM или Native?
Я тут тоже написал, но только по технологии COM, на C#
Я вот думаю может на С# нельзя написать по технологии Native.
И кстати не знаешь как заставить работать через WEB?
(107) Привет! У меня COM, тоже на C#. Через web - это только native писать
109. Гость 31.08.14 10:29
Привет, у меня ошибка при использовании reg.bat. ОС: Windows 7 (x64) Домашняя расширенная. https://www.dropbox.com/s/5thsfyfn3un8y3j/1.png?dl=0
110. UserInfoStart 31.08.14 10:45 Сейчас в теме
"Привет, у меня ошибка при использовании reg.bat. ОС: Windows 7 (x64) Домашняя расширенная. https://www.dropbox.com/s/5thsfyfn3un8y3j/1.png?dl=0" - виноват, все работает.
(110) Привет! При запуске тестовой обработки какое сообщение появляется?
111. UserInfoStart 31.08.14 11:07 Сейчас в теме
Возможна реализации компоненты на серверной ОС?
113. GoodZone 15.09.14 06:45 Сейчас в теме
Здравствуйте! Давно использую вашу компоненту. Заметил один нюанс, не знаю как побороть ))) Есть картинка хорошего разрешения и большого размера, при изменении размера шириной 370 пропорционально, или высотой 360 пропорционально резко уменьшается резкость, с другими размерами картинка четкая. Не подскажете в чем может быть проблема?
На всякий случай вставлю код:
			Пока Выборка.Следующий() Цикл
				ИмяОсновнаяКартинка = Выборка.ПутьКФайлуКартинки;
				GraphicsVK.ПолучитьИзображение(ИмяОсновнаяКартинка);
				ВысотаКартинки = Число(GraphicsVK.Высота);
				ШиринаКартинки = Число(GraphicsVK.Ширина);
				Коэфф1 = ШиринаКартинки / ВысотаКартинки;
					Если Коэфф1 > ОсновнойКоэффБольшой Тогда		
					GraphicsVK.ИзменитьРазмерИзображения(370, 0, 0, Истина);
				Иначе
					GraphicsVK.ИзменитьРазмерИзображения(0, 360, 0, Истина);
				КонецЕсли;
				
				ИмяФайлаКартинкиБольшая = ПолучитьПолноеИмяФайла(ВременныйКаталогСообщенийОбмена.ПолноеИмя,строка(Выборка.НомерКартинки)+"_b.jpg");
				
				GraphicsVK.СохранитьИзображение(ИмяФайлаКартинкиБольшая,1,80,Ложь);
				GraphicsVK.Закрыть();
			
				GraphicsVK.ПолучитьИзображение(ИмяОсновнаяКартинка);
				если ВысотаКартинки>1024 или ШиринаКартинки>1024 Тогда
					Если Коэфф1 > 1 Тогда		
						GraphicsVK.ИзменитьРазмерИзображения(1024, 0, 0, Истина);
					Иначе
						GraphicsVK.ИзменитьРазмерИзображения(0, 1024, 0, Истина);
					КонецЕсли;
				Конецесли;
				ИмяФайлаКартинкиГлавная = ПолучитьПолноеИмяФайла(ВременныйКаталогСообщенийОбмена.ПолноеИмя,строка(Выборка.НомерКартинки)+".jpg");
				
				GraphicsVK.СохранитьИзображение(ИмяФайлаКартинкиГлавная,1,80,Ложь);
				GraphicsVK.Закрыть();
				
				
				
				GraphicsVK.ПолучитьИзображение(ИмяОсновнаяКартинка);
				
				Если Коэфф1 > ОсновнойКоэфф Тогда		
					GraphicsVK.ИзменитьРазмерИзображения(214, 0, 0, Истина);
				Иначе
					GraphicsVK.ИзменитьРазмерИзображения(0, 160, 0, Истина);
				КонецЕсли;
				
				ИмяФайлаКартинкиСредняя = ПолучитьПолноеИмяФайла(ВременныйКаталогСообщенийОбмена.ПолноеИмя,строка(Выборка.НомерКартинки)+"_m.jpg");
				
				GraphicsVK.СохранитьИзображение(ИмяФайлаКартинкиСредняя,1,80,Ложь);
				GraphicsVK.Закрыть();
				
				GraphicsVK.ПолучитьИзображение(ИмяОсновнаяКартинка);
				Если Коэфф1 > 1 Тогда		
					GraphicsVK.ИзменитьРазмерИзображения(72, 0, 0, Истина);
				Иначе
					GraphicsVK.ИзменитьРазмерИзображения(0, 72, 0, Истина);
				КонецЕсли;
				
				ИмяФайлаКартинкиМаленькая = ПолучитьПолноеИмяФайла(ВременныйКаталогСообщенийОбмена.ПолноеИмя,строка(Выборка.НомерКартинки)+"_s.jpg");
				
				GraphicsVK.СохранитьИзображение(ИмяФайлаКартинкиМаленькая,1,80,Ложь);
				GraphicsVK.Закрыть();
				
				Если ФлагВыгрузкаФТП Тогда
					ФТП.Записать(ИмяФайлаКартинкиГлавная, строка(Выборка.НомерКартинки)+".jpg");
					ФТП.Записать(ИмяФайлаКартинкиСредняя, строка(Выборка.НомерКартинки)+"_m.jpg");
					ФТП.Записать(ИмяФайлаКартинкиБольшая, строка(Выборка.НомерКартинки)+"_b.jpg");
					ФТП.Записать(ИмяФайлаКартинкиМаленькая, строка(Выборка.НомерКартинки)+"_s.jpg");
				КонецЕсли;
			КонецЦикла;
Показать
(113) Здравствуйте! Никогда с таким не сталкивался. Посмотрю, что можно сделать
(113) Попробовал воспроизвести, не получилось. Взял две картинки 1166x1890 и 1890x1166.
Изменил пропорционально размеры по высоте 360 и по ширине 370. Также брал все размеры от 350 до 400 с шагом в 10px. Но никакого сильного уменьшения резкости не заметил по отношению к другим размерам. Можете выложить конкретный оригинальный файл?
116. GoodZone 18.09.14 08:39 Сейчас в теме
Заметил такую особенность, тестовой обработкой, которая у вас приложена все корректно отрабатывает, а вот с моим кодом, почему-то так (((. Т.е. если картинку загружаешь в поле формы, потом обрабатываешь, то вроде как все ок. Файл картинки прилагаю, правда не знаю поможет или нет.
Прикрепленные файлы:
117. monkbest 23.09.14 09:07 Сейчас в теме
Добрый день.

Возможно ли такое использование Вашей ВК?
Управляемое приложение. Положил её в общий макет и пытаюсь зарегистрировать кодом. ОС - вин 7 64.

&НаКлиенте
Процедура ДобавитьФайлИзБуфераОбмена(Команда)
	Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПоРаботеСИзображениями","КомпонентаПоРаботеСИзображениями",ТипВнешнейКомпоненты.Native) Тогда
		GraphicsVK = Новый("AddIn.КомпонентаПоРаботеСИзображениями.GraphicsNET");
	КонецЕсли;
КонецПроцедуры


(117) Добрый день! Нет, такой фокус не пройдет )
Надо регистрировать через RegAsm.exe. В архиве лижит версия этого файла для x86.
Для x64 надо его взять из соответствующей папки, что-то вроде
c:\Windows\Microsoft.NET\Framework64\vx.x.xxx\
119. monkbest 23.09.14 09:36 Сейчас в теме
(118) блин, жалко. Все равно плюсанул Вам:)

А какими свойствами должна отличаться компонента, чтобы её можно было "налету" регистрировать? На каких технология должна быть построена?
(119) Компонента должна быть написана с использованием технологии NativeAPI. На Инфостарте достаточно статей на эту тему.
А зачем вам регистрировать на лету? Если вы не собираетесь использовать компоненту через веб-интерфейс, то и моя отлично сгодится.
Один раз на компьютере регистрируете ее через RegAsm и пользуетесь.
121. monkbest 23.09.14 09:50 Сейчас в теме
(120) делаю конфу для тех.поддержки, хотел удобный сервис по вставки в "задачу программисту" принтскрина. Т.е. из буфера хочу цеплять изображение.

сервис как раз хотел засунуть в веб.

да и даже, если не через веб. Программа должна быть самодостаточной, чтобы, если ей что требуется, она сама все ставила. А не так: скачал/установил базу, скачал/установил компоненту, скачал/установил драйвер
123. GoodZone 23.09.14 10:00 Сейчас в теме
вот такой получается
Прикрепленные файлы:
(123) Никак не удается повторить, все равно резкость сохраняется.
Размытую картинку, один в один, у меня удалось получить только следующим образом:
1) Взял большую, сделал размер по ширине 214 (просто цифра из вашего кода), сохранил
2) Взял получившуюся картинку, сделал размер по ширине 370, сохранил.
Резкость падает, только если из меньшей картинки сделать большую.
Может у вас в GraphicsVK.ИзменитьРазмерИзображения(370, 0, 0, Истина) иногда попадает маленькая картинка?
125. Akasy 18.11.14 16:02 Сейчас в теме
А можно как то убрать сообщение "В буфере изображение"?
(125) Скачайте новую версию обработки
127. VitalMakarr 11.03.15 06:28 Сейчас в теме
Зачем ограничиваться узкими возможностями. Попробуйте http://infostart.ru/public/322956/
(127) Да, я видел вашу разработку, отличная вещь. Функционал схож, но она несколько о другом. Вы больше ориентируетесь на интерактивное редактирование, а моя компонента, скорее, для автоматической обработки изображений.
129. VitalMakarr 11.03.15 11:16 Сейчас в теме
(128) Спасибо. У Вас тоже разработка достойная внимания. Но Вы немного не правы. Обработка разработана универсально: с одной стороны это многофункциональный графический редактор, с другой она используется как объект из встроенного языка без интерактивных средств (аналог подключаемой компоненты). Для этого реализован набор экспортных процедур и функций. Если повнимательнее ознакомитесь с публикацией то найдете примеры использования данного режима ("Стандартизация картинок" - для пакетной обработки картинок) и полное описание экспортных процедур, функций и переменных. Более того изначально она разрабатывалась именно для этого - расширить возможности встроенного языка 1С для работы с типом объекта "Картинка".
(129) К сожалению полноценно потестировать вашу разработку не удалось. Постоянно появляется ошибка
{ВнешняяОбработка.mvРедакторИзображений.МодульОбъекта(1187)}: Ошибка при вызове метода контекста (Run)

Есть сомнения, что ImageMagick будет работать на сервере x64.
131. VitalMakarr 11.03.15 14:00 Сейчас в теме
(130) Windows Server 2008 R2 SP1 x64, сервер 1С x64. Открыл редактор все отлично работает. Можете рассказать поподробнее как и на чем тестируете!
(131) Редактор и будет работать. Попробуйте выполнить, например, поворот картинки &НаСервере. Я не тестирую, это только предположение. Просто не раз уже сталкивался, когда все отлично работает? пока дело не доходит до сервера 1c x64
133. VitalMakarr 11.03.15 14:52 Сейчас в теме
(132) Пока у меня таких проблем с сервером 1С х64 не возникало. Нижеследующий код выполнен без ошибок. Система Windows Server 2008 R2 SP1 x64, сервер 1С x64. Всякое возможно. И необходимо разбираться на конкретных случаях. Как например в Вашем случае. Всегда рад помочь и буду благодарен если сможете указать на конкретные ошибки. И думаю дальнейшие комментарии будут более уместны на странице соответствующей публикации )))


&НаСервереБезКонтекста
Процедура КомандаВыполнитьТестНаСервере()

// Создаем объект редактора
РедакторИзображений = Обработки.mvРедакторИзображений.Создать();
// Вызываем конструктор объекта (обязательно для инициализации)
РедакторИзображений.СоздатьОкружение();
// Открываем изображение из файловой системы
РедакторИзображений.Открыть("C:\1.png", Ложь);
// Поворачиваем изображение против хода часовой стрелки на 45 градусов
РедакторИзображений.ПовернутьИзображениеВлево(45);
// Сохраняем внесенные изменения в новый файл
РедакторИзображений.СохранитьКак("C:\1_результат." +РедакторИзображений.ПолучитьРасширениеФайлаПоФорматуКартинки(РедакторИзображений.ПолучитьКартинку().Формат()));
// Закрываем открытый файл
РедакторИзображений.Закрыть();
// Вызываем деструктор объекта
РедакторИзображений.УдалитьОкружение();

КонецПроцедуры

&НаКлиенте
Процедура КомандаВыполнитьТест(Команда)
КомандаВыполнитьТестНаСервере();
КонецПроцедуры
134. tiniji 18.05.15 05:13 Сейчас в теме
В прошлой версии, которая бесплатная, была проблема с сохранением изображений формата png, в формат jpg. Прозрачный фон png сохранялся не белым фоном, а дублировал само изображение. В этой версии это исправлено ?
(134) tiniji, спасибо, что написали. Такой проблемы не видел, но сейчас обнаружил. В ближайшее время исправлю.
136. Nikola23 04.07.15 20:04 Сейчас в теме
Исходный код приложите к компоненте. Не то, что бы я не доверял, но знать, что компонента обрабатывает только картинки, а не, например, справочник контрагентов - полезно.
(136) Nikola23, компоненты, выполненные по технологии Native API могут оперировать только простыми типами данных и не могут обращаться к объетам (справочники, документы, регистры) базы данных, а также не могут принимать и передавать ссылки на эти объекты в качестве аргументов.
138. Mrbubka 13.10.15 11:27 Сейчас в теме
Добрый день обновлялись — обновлялись. Платформа 8.3.6.2299.
Раньше работало все.
Теперь при запуске обработки 1С тупо вылетает. Откатить назад платформу не можем. И графикснет работать не хочет. Может встречали подобную ошибку. Cервер 1c (постгрес) — пробовал из файловой запустить — тоже самое. Операционка — семерка. Специально ввиду всяких различных проблем после обновлений — снятая давным давно с поддержки. Пробовал на ИКС ПИ запустить — тоже савмое…вылетает ошибка «Прекращена работа «1cv8″»
(138) Здравствуйте, Михаил!
Писал вам ответ на своем сайте.
Какой вариант базы используете, файловый или клиент-серверный? Если последний то какая версия сервера x86 или x64? Такую проблему я встречал только на x64 сервере, но решить в NET-версии ёё так и не смог. Сейчас на Инфостарте опубликована новая версия, правда она платная, но есть демо-версия. Писалась она для 8.3 и тонкого клиента, выполнена по технологии NativeAPI. Попробуйте её в работе, возможно поможет.
139. Mrbubka 13.10.15 11:29 Сейчас в теме
Имя события проблемы: APPCRASH
Application Name: 1cv8.exe
Application Version: 8.3.6.2299
Application Timestamp: 55f1696c
Fault Module Name: core83.dll
Fault Module Version: 8.3.6.2299
Fault Module Timestamp: 55f16679
Exception Code: c0000005
Exception Offset: 000089a4
Версия ОС: 6.1.7601.2.1.0.256.48
Код языка: 1049
141. Mrbubka 13.10.15 14:38 Сейчас в теме
База раньше была файловая - запилили ее в сервер 1С. Пробовал запускать обработку как из сервера, так и из файловой версии. Думаю дело все таки в 1С, так как пробовал на компьютере, на котором кроме антивируса и, собственно, 1С ничего не обновлялось. Раньше все работало. Попробую новую версию.
142. bajen 18.02.16 12:33 Сейчас в теме
Как получить демоверсию для проверки работы?
(142) bajen, скачайте файл ТестGGraphics.epf. В эту обработку встроена демонстрационная версия.
144. serq82 25.04.16 08:06 Сейчас в теме
ERROR
Использование модальных окон в данном режиме запрещено
(144) serq82, если это сообщение появилось сразу при запуске после сообщения "Компонента установлена", то это недоработка 1С. Модальное окно вызывается у них в методе УстановитьВнешнююКомпоненту(). На работоспособность это никак не влияет т.к. при последующих запусках данные метод не вызывается.
146. Kamrad 16.09.16 14:01 Сейчас в теме
Подскажите, компонента позволяет прочитать из EXIF ориентацию фото?
(146) Kamrad, текущая версия этого не умеет. Думаю, это можно доработать.
148. mixperm 21.09.16 19:11 Сейчас в теме
Нужно накладывать ватермарку в виде текста с фоном внизу. Есть такая возможность?
(148) mixperm, есть метод для добавления текста, но удобнее просто сделать отдельный файл с водяным знаком большого размера и каждый раз его подгонять под нужную ширину/высоту и наносить поверх имеющейся картинки с определенной прозрачностью. Местоположение водяного знака можно задавать.
150. 7OH 28.09.16 12:52 Сейчас в теме
Добрый день.
А не планируете добавить возможность работать с картинками БЕЗ файлов ?
NativeApi конечно хорошо, но тогда уж хочется сразу работать с объектом Картинка (получили картинку из хранилища, вывели водяной знак и на форму)
(150) 7OH, сейчас такое возможно, правда несколько сложнее. В компоненту можно передать картинку через свойство Base64. Алгоритм такой: получили картинку из хранилища -> преобразовали в base64 и передали в GGraphics -> добавили водяной знак -> получили обратно двоичные данные и отобразили на форме.
152. m-sla 26.03.17 09:07 Сейчас в теме
Добрый день! Подскажите в вашей обработке 1с не зависает при обращении к свойствам картинки? Если установлен режим совместимости 8.3.8? в данный момент компонента graphicsnet работает только в режиме совместимости 8.3.5
(152) Здравствуйте! graphicsnet работает по другой технологии. Здесь таких зависаний быть не должно. Вы можете скачать демонстрационную версию и всё проверить.
154. mchammer4 15.06.17 16:59 Сейчас в теме
Добрый день!

возникаю вот такого рода ошибки:
Ошибка при вызове метода контекста (ПолучитьДвоичныеДанные): Ошибка вызова метода внешней компоненты: Invalid pointer operation

Ошибка при вызове метода контекста (ПолучитьИзображение): Ошибка вызова метода внешней компоненты: Access violation at address 000000000E99C10D in module 'v8_C28D_46.tmp'. Read of address FFFFFFFFFFFFFFB0

Ошибка при вызове метода контекста (ПолучитьДвоичныеДанные): Ошибка вызова метода внешней компоненты: Stack overflow

в чем может быть проблема?
(154) Здравствуйте! Можете сбросить мне ссылку на файл, с которым возникает ошибка? Управляемые или обычные формы? Если управляемые, то на какой стороне приходит ошибка (клиент или сервер)? База файловая или серверная? Какая операционная система используется?
156. mchammer4 15.06.17 23:35 Сейчас в теме
да, вложил. Формы управляемые, ошибка на сервере, база серверная, на сервере 1с ОС win2008r2
Прикрепленные файлы:
157. mchammer4 16.06.17 10:20 Сейчас в теме
ситуация следующая: у нас регламентным заданием обрабатывается большой массив картинок с разными действиями (изменить размер, обрезать, повернуть, наложить водяной знак и т.д.) и примерно после обработки 2 000 картинок начинают появляться описанные выше ошибки
(157) Понял. Можете еще чуть подробнее описать алгоритм действий? Для чего и после чего вызывается получение двоичных данных? Вызываете метод компоненты Закрыть() для освобождения памяти?
159. mchammer4 19.06.17 10:58 Сейчас в теме
Берем выборку картинок и по определенному сценарию обрабатываем их.
Так как последовательность действий (далее сценарий) может быть любая, то на каждой итерации мы получаем двоичные данные, которые передаем на вход следующей функции для обработки и т.д.
Да, после каждой обработки мы освобождаем память методом Закрыть().

Заметили еще вот такую вещь: частота возникновения таких ошибок возрастает, если запустить обработку картинок по нескольким сценариям параллельно.
(159) Вы мне можете показать ваш код?
162. zaoproxy 11.04.18 13:25 Сейчас в теме
подскажите, компонента может осуществлять чтение геотегов из файла?
если нет, то планируется ли данная доработка?
(162) в планах есть чтение EXIF, но сроков назвать не могу.
164. zaoproxy 12.04.18 04:11 Сейчас в теме
а может тогда подскажите как эти геотеги можно вытащить из файлов другим способом доступным для 1С?
(164) Никогда этого не делал. Возможно, это можно сделать с помощью imagemagick
166. zaoproxy 12.04.18 10:50 Сейчас в теме
167. AlexeyDmuhin 22.08.18 15:13 Сейчас в теме
Подскажите, есть ли возможность отдавать компоненте сразу двоичные данные?
Здравствуйте! Напрямую нет, только вот так
GGraphics.Base64 = Base64Строка(ДвоичныеДанные);
169. AlexeyDmuhin 22.08.18 16:27 Сейчас в теме
Увидел, что можно через преобразование в base64.
Но все же лучше было бы напрямую двоичные данные загонять.
170. AlexeyDmuhin 22.08.18 17:34 Сейчас в теме
Есть ли возможность сделать функцию добавления пикселей по высоте или по ширине картинки с заполнением цветом крайних пикселей исходного изображения (или с указанным цветом). Как пример: после изменения картинки по ширине до 762 пикселей с пропорциональным изменением по высоте, высота не дотягивает до 1100 пикселей, нужно еще добавить 64 пикселя.
172. AlexeyDmuhin 04.09.18 10:25 Сейчас в теме
(171) Случайно еще не готово? Готов выступить бета-тестером
(172) К сожалению, нет. Постараюсь на этой неделе сделать.
(172) Отправил новую версию вам на почту.
175. ermak 12.12.18 12:36 Сейчас в теме
Добрый день!

Возникла проблема с компонентой.

		ИмяФайла = ПолучитьИмяВременногоФайла("jpg");
		ИсходнаяКартинка = Хранилище.Получить();
		ИсходнаяКартинка.Записать(ИмяФайла);
		
		GraphicsVK.ПолучитьИзображение(ИмяФайла);
		ШиринаКартинки = GraphicsVK.Ширина;
		ВысотаКартинки = GraphicsVK.Высота;
		
		// Ermaksoft #11153 Ermakov
		ИзображениеИзменено = Ложь;
		Если ШиринаКартинки>200
			И ВысотаКартинки <=200 Тогда
			GraphicsVK.ИзменитьРазмерИзображения(200 ,0, 0, Истина);
			ИзображениеИзменено = Истина;
		ИначеЕсли ВысотаКартинки>200
			И ШиринаКартинки<=200 Тогда
			GraphicsVK.ИзменитьРазмерИзображения(0 ,200, 0, Истина);
			ИзображениеИзменено = Истина;
		ИначеЕсли ШиринаКартинки > 200
			И ВысотаКартинки > 200 Тогда
			
			Если ШиринаКартинки > ВысотаКартинки Тогда
				GraphicsVK.ИзменитьРазмерИзображения(200 ,0, 0, Истина);
			Иначе
				GraphicsVK.ИзменитьРазмерИзображения(0 ,200, 0, Истина);
			КонецЕсли;
			ИзображениеИзменено = Истина;
		КонецЕсли;
		
		//ИмяФайлаДляСохранения = ПолучитьИмяВременногоФайла("jpg");
		Если ИзображениеИзменено Тогда
			//GraphicsVK.СохранитьИзображение(ИмяФайлаДляСохранения, 1, 90, Истина);
			GraphicsVK.СохранитьИзображение(ИмяФайла, 1, 90, Истина);
		КонецЕсли;
		
		GraphicsVK.Закрыть();

Показать


После того, как выполняется метод СохранитьИзображение(), файл из временной директории удаляется, а новый не записывается.

Есть решение по такой проблеме?
(175) Здравствуйте! Возможно это как-то связано с тем, что 1С "держит" файл, сохраненный методом ИсходнаяКартинка.Записать(ИмяФайла)
Варианта два:
1. После сохранения попробовать переместить файл, а уже потом обращаться к нему из компоненты
2. Не удалять исходный файл при сохранении, а делать это "руками". Сохранять при этом в отдельный временный файл.
177. ermak 13.12.18 15:30 Сейчас в теме
(176)

Добрый день!

Спасибо за ответ!
Я думаю, что это исключено, т.к., компонента, как я смог понять, монопольно захватывает файл и с ним ничего не возможно сделать, пока не отработает метод Закрыть().

Подтвердите пожалуйста, что метод компоненты СохранитьИзображение(), в случае, если входящий файл и сохраняемый файл имеют одно имя, будет записан с новым значением данных.

Спасибо!
(177) Вы используете платную версию компоненты, использующую NativeAPI или бесплатную версию с файлами reg.bat и unreg.bat?
179. taa-cor1@mail.ru 29.01.19 17:24 Сейчас в теме
Приветствую!
Возникла необходимость в автоматическом режиме удалять пустые края у сканов. Применил метод ОбрезатьПустыеКрая() и ожидаемого результата не увидел - по высоте только на 2 пикселя уменьшилось изображение. Поделитесь, пожалуйста, практикой по применению данного метода, может есть какие-то особенности? Спасибо.
Прикрепленные файлы:
(179) Здравствуйте! Метод ОбрезатьПустыеКрая работает только для прозрачных частей изображения. В вашем случае он не подойдет. Если скан всегда +- одинаковый, можно использовать метод ОбрезатьИзображение с заранее подобранными параметрами.
181. taa-cor1@mail.ru 29.01.19 18:19 Сейчас в теме
(180) Ясно. Подскажите, пожалуйста, планируется ли доработка компоненты GGraphics или какими средствами можно осуществлять обрезку белых полей? А то у меня сканы с плавающими полями и мне необходимо повысить точность получения областей по фиксированным координатам. Спасибо.
(181) Попробую что-нибудь придумать
183. taa-cor1@mail.ru 30.01.19 11:34 Сейчас в теме
(182) Спасибо, маякните, пожалуйста, по результатам, актуально.
184. oldfornit 06.03.19 16:24 Сейчас в теме
Добрый день.
При выполнении кода

                
                ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.GGraphics", "Graphics", ТипВнешнейКомпоненты.Native);
                
                Если Не ПодключениеВыполнено Тогда                    
                               Возврат;
                КонецЕсли;
                
                БинКартинка = Картинка.ПолучитьДвоичныеДанные();
                ИмяФайла1 = ПолучитьИмяВременногоФайла(".png");
                БинКартинка.Записать(ИмяФайла1);
                БинКартинка = Неопределено;

                GGraphics = Новый("AddIn.Graphics.GGraphics");            
                GGraphics.ПолучитьИзображение(ИмяФайла1);
                GGraphics.ПовернутьИзображение(Ложь ,Ложь , Угол);               
Показать


выходит сообщение "Поле объекта не доступно для записи (ПоворотИзображения)" при вызове метода "ПовернутьИзображение"
Метод вызывали и с двумя первыми параметрами, и без.
Подскажите пожалуйста, в чем может быть причина?
(184) Здравствуйте! Никогда не было такой ошибки. Что за переменная "Угол"? Откуда она берется, не является ли реквизитом формы/объекта? Если является попробуйте сделать так:

УголПовотора = Угол;
GGraphics.ПовернутьИзображение(Ложь ,Ложь , УголПовотора); 
186. oldfornit 06.03.19 17:06 Сейчас в теме
(185) Переменная "угол" реквизитом не является. Это входящий параметр процедуры, в которой вызывается процитированный код
(186) У компоненты нет поля с именем "ПоворотИзображения". Текст ошибки стандартный и сгенерирован платформой, значит у вас есть реквизит/поле с таким именем. Не могу сказать, как он связан с компонентой т.к. в коде ничего такого я не вижу. Можете выложить куда-нибудь всё в виде внешней обработки?
188. oldfornit 07.03.19 10:15 Сейчас в теме
(187) спасибо. Оказывается передавалось некорректное значение третьего параметра - передавали 90.
Как это повлияло на вывод именно такого сообщения об ошибке - понять не могу
189. taa-cor1@mail.ru 13.03.19 12:26 Сейчас в теме
Приветствую!
Исходные данные:
- 2 файловые базы с одинаковой конфигурацией (доработанный Документооборот 8 КОРП, редакция 2.1.12.2);
- приобретенная обработка GGraphics.epf (код не изменен);
- многостраничный файл img-1205113507-0001.tif
Проблема:
База №1 - на локальном компьютере (Windows 8.1), платформа 8.3.12.1685 - СРАБАТЫВАЕТ метод GGraphics.УстановитьТекущийКадр(НомерКадра), см.скрин Image 172.jpg
База №2 - на сервере (Windows Server 2012 R2 Standart), платформа 8.3.13.1690 - НЕ СРАБАТЫВАЕТ метод GGraphics.УстановитьТекущийКадр(НомерКадра), см.скрин Image Image 166.jpg. Соответственно, переваливается в исключение, файл не обработан.
Проконсультируйте, пожалуйста, по данной ситуации. Спасибо!
Прикрепленные файлы:
(189) Здравствуйте! Разберусь и отпишусь.
191. taa-cor1@mail.ru 13.03.19 14:35 Сейчас в теме
(190) Ок, спасибо, ожидаю.
Сориентируйте, пожалуйста, по моему комментарию 179. В планах или не предвидится пока?
(191) Вопрос решен еще месяц назад. Я вам 2 февраля писал на почту.
193. taa-cor1@mail.ru 14.03.19 15:47 Сейчас в теме
(192) Приветствую!
Я извиняюсь, своевременно не заметил Ваше письмо. Просьба повторно прислать актуальную ссылку (прежняя не доступна). Спасибо!
194. taa-cor1@mail.ru 14.06.19 12:54 Сейчас в теме
(189) Приветствую!
Сориентируйте, пожалуйста, по приведенной ситуации ожидать ответа или посмотреть другие варианты по разборке tif на сервере? (хотелось бы одну компоненту по максимому использовать). Спасибо!
(194) Здравствуйте! Решение не подошло или не удалось скачать последнюю версию?
196. skyboy13 06.12.19 12:26 Сейчас в теме
Вставил себе обработку в конфигурацию. При старте пишет: Установка внешней компоненты не выполнено. Win7, x64
(196) (197) В толстом или в тонком клиенте такое пишет? Как подключаете компоненту, можете показать код?
Прошу выложить изображение на какой-нибудь внешний сервис.
197. skyboy13 06.12.19 12:31 Сейчас в теме
На обычных формах запустилось. Но вот этот файл не воспринимает.
Прикрепленные файлы:

Оставьте свое сообщение

См. также

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

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

6000 руб.

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

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с...

2400 руб.

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

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

2400 руб.

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

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

1500 руб.

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

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

2000 руб.

QR-код с логотипом компании (обычная и управляемая форма)

Как известно, стремление сделать свою рекламную продукцию запоминающейся и выделяющейся — верный путь к успеху. Сегодня, мы поговорим с вами о том, что можно сделать с обычным черно-белым QR-кодом, чтобы он стал более живым и привлекательны...

2400 руб.

Мультитул - Инструменты для работы с оборудованием и возможности Python в 1С.

На текущий момент поддерживается tcp клиент и сервер, работа с COM портом(232, 485) в удобном для отладки варианте через HEX-строку и в неизмененном виде, создание modbus запроса через вышеуказанные интерфейсы и дешифровка ответа. Распознав...

6000 руб.

Внешняя компонента GraphQL клиент для 1С

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

Компонента ExchangeStruc (Структура Обмена). Прямой обмен данными между потоками, сессиями и окнами.

Аддон "Структура Обмена" (ExchangeStruc) - это компонента, которая обеспечивает доступ к разделяемым процессом структурам, аналогичным структурам 1С. Обеспечивает прозрачную передачу данных примитивных типов, в том числе Двоичных ...

7200 руб.

88005555256
Заказать звонок
support@infostart.ru
Telegram
Чат на сайте