gifts2017

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

Опубликовал Александр Шкураев (salexdv) в раздел Программирование - Внешние компоненты

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

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

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

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

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

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

Поддерживаемые операционные системы:
Windows XP, Windows 7,8 (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) Закрыть / 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 месяцев, начиная с даты приобретения продукта.

Гарантия возврата денег

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом течение 14-ти дней со дня поступления денег на наш счет.

Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.

Для возврата оплаты просто свяжитесь с нами.

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

Наименование Файл Версия Размер Кол. Скачив.
ТестGGraphics.zip
.zip 4,21Mb
11.07.16
87
.zip 4,21Mb 87 Скачать
GGraphics - внешняя компонента для работы с картинками
05.08.2016
2000 руб.

Моментальная
доставка

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Alxd (salexdv) 02.09.10 14:37
Исправил недочет с прозрачными областями png при наложении "водяного знака"
2. Андрей Д. (detec) 02.09.10 14:38
А какой командой добавлять компоненту в Windows?
3. Alxd (salexdv) 02.09.10 14:42
4. Alex (AlexBugs) 02.09.10 15:12
А в 7.7 точно работает? Может пример есть? :)
5. Alxd (salexdv) 02.09.10 16:01
(4) В 7.7 точно работает
ЗагрузитьВнешнююКомпоненту(<ПутьКВК>);
Graphics = СоздатьОбъект("AddIn.GraphicsVK")
6. Андрей Д. (detec) 02.09.10 16:02
(3)

Спасибо! Так сейчас и сделал, При регистрации ошибок не было. Но всё равно не видит компоненту. Запускаю из толстого клиента, на Windows 7 x64. Я выполнял регистрацию из 32-битного cmd.exe
7. Alxd (salexdv) 02.09.10 16:05
(6) Файл компоненты должен лежать в каталоге исполняемых файлов 1С, либо
В ИмяФайла
ЗагрузитьВнешнююКомпоненту(<ИмяФайла>) 
должн быть указан полный путь к dll
8. dushelov (Душелов) 02.09.10 16:09
Советую - работать с 1С-ными объектами типа "Картинка" (сделать 3 свойства для 7.7, 8.1 и 8.2 соответственно) и в зависимости от типа платформы возвращать готовый объект, без двоичных данных и промежуточных сохранений в файл.
9. Андрей Д. (detec) 02.09.10 16:10
(7) Попробовал зарегистрировать из 63-битного cmd.exe - не заработало. Только когда подкинул dll-ку в каталог 1С 8.2 - только тогда увидело её.

Но т.к. релизы 8.2 очень часто меняются - это паллиатив. Путь к dll-ке я, разумеется, указываю полный.
10. Alxd (salexdv) 02.09.10 16:13
(8) В будущем так и сделаю
(7) Тут ничего не поделаешь, либо хранить в BIN, либо указывать полный путь.
Кажется, есть еще и третий вариант, но он муторный
11. Андрей Д. (detec) 02.09.10 16:19
Кажется, в демо-обработке есть баг. Я выбрал тип файлы - png, а после выбора пути сохранения мне выдало имя bmp.
12. Alxd (salexdv) 02.09.10 16:23
(11) Значит в поле "Файл для сохранения" было написано ***.bmp, хотя формат сохраненного файла при этом все равно будет png
13. Аркадий Кучер (Abadonna) 04.09.10 08:04
(0) Как я понял из заголовка, ВК может работать и с 7.7.
Тогда вопрос: как задать в 7.7 тип Булево?
ВПроцентах – признак того, что все величины указаны в процентах. Тип: Булево

Нет его там вообще.
14. Alxd (salexdv) 04.09.10 10:56
(13) Все просто, для 7.7 будет так:
0 - Ложь
Не нуль - Истина
15. Аркадий Кучер (Abadonna) 04.09.10 10:58
(14) У тебя ж не написано, что параметр вариантный, вот я и спросил.
Допиши в описание
16. Илья Фамилия (Murom) 06.09.10 14:55
Компонента то, что надо. Давно искал что-то подобное т.к. не хотелось мутить через COM.
17. Alxd (salexdv) 06.09.10 15:12
(16) Форматы «водяного знака»:

* bmp
* jpg
* png

Сохрани как png c прозрачностью и все должно стать хорошо
18. Илья Фамилия (Murom) 07.09.10 16:56
Есть еще вопрос!
Открываю png с прозрачным фоном, меняю размер изображения (растягиваю водяной знак ) потом сохраняю ... и получаю что прозрачный фон заменен на белый.

вкФайлКопирайта.ИзменитьРазмерИзображения(Ширина, Высота, 0, Ложь);
вкФайлКопирайта.СохранитьИзображение("tmp.png", 2, 0, Ложь);

Можно как нибудь сделать , чтоб прозрачный фон сохранялся?
19. Alxd (salexdv) 07.09.10 17:34
(18) К сожалению png пока не получится записать, сохранив при этом прозрачность. В будущем надеюсь это исправить.
20. Дмитрий Павлик (DimaP) 07.09.10 18:38
Плюс - задолался с этим ИмейджМэджик - нифига не работает, аналогично с остальными утилистами консольного преобразования изображений.
Вот только оно как-то долго работает ... :(
21. Alxd (salexdv) 07.09.10 20:52
22. Илья Фамилия (Murom) 09.09.10 00:24
(19) Ну, тогда будем ждать новую версию с сохранением прозрачного фона в png.
PS . Реально очень сильно не хватало в 1с функций для преобразования графических файлов.
23. Alxd (salexdv) 09.09.10 07:26
24. Роман (srv7) 09.09.10 16:19
спасибо, компонента очень выручила ! желаю дальнейшего развития проекта ! ))
25. Alxd (salexdv) 09.09.10 16:22
26. Альтаир (Altair777) 09.09.10 16:33
В архиве лежит Тест1CGraphics.epf
а для 7-ки можно?
27. Alxd (salexdv) 09.09.10 16:35
(26) Нет, для семерки пример делать нет времени, но там все абсолютно тоже самое.
28. Илья Фамилия (Murom) 09.09.10 18:09
При наложении в цикле водяного знака (при вызове ДобавитьВодянойЗнак) течет память.
Потом показывается ошибка
GraphicsVK : Some operation could not be performed because the system is out of resources. Close some windows and try again..
Потом
GraphicsVK : Access violation at address 073932D4 in module 'GraphicsVK.dll'. Write of address 00000000 и еще что-то.
И вылетает 1с. Файл подкачки вырастает почти на 1 гб...
Если надо могу пример обработки под 8.1.

29. Alxd (salexdv) 10.09.10 07:08
30. Денис Яковлев (iceflash) 10.09.10 16:05
На чем написана компонента? (с целью подсказать возможные проблемы/улучшения)
32. Денис Яковлев (iceflash) 10.09.10 17:04
Так и подумал, но решил уточнить=) Используешь что для работы с изображениями? TJpegImage (вроде так называется) и Tbitmap или стороннее что то?
33. Alxd (salexdv) 10.09.10 17:10
(32) Используется много чего.
Для хранения текущего изображения TBitmap
Для открытия различных форматов TPicture и TGIFImage (RXLib модуль rxgif)
При сохранении в jpg TJPEGImage
При работе с png используется TPNGObject (модуль pngimage)
34. Денис Яковлев (iceflash) 10.09.10 17:24
Насколько помню вот так с ходу:
1. Не используй Tbitmap
2. Преобразования и битовые операции делай через BitBlt и маски
3. Все перечисленные объекты должны позволять работать не использая Bitmap
4. Самое узкое место всегда тут будет Tbitmap , пробуй указатели либо там есть еще какой то "тип" данных (не помню уже точно) - это даст экономию памяти, а использование процедур апи и работы с маской значительный прирост=)
35. Alxd (salexdv) 10.09.10 17:26
(34) Спасибо! Буду пробовать различные варианты
36. Alxd (salexdv) 14.09.10 17:09
(28) Добавил метод "Закрыть()"
При вызове метода высвобождается память занимаемая объектом.
Т.е. порядок работы следующий
Компонента.ПолучитьИзображение(...);
// Различные манипуляции с изображением
Компонента.xxxx();
Компонента.xxxx();
Компонента.СохранитьИзображение(...);
Компонента.Закрыть();
...Показать Скрыть
37. Сергей Максин (msw2010) 14.09.10 18:35
Не получилось работать с emf/emz (стандартные форматы Офиса)
38. Alxd (salexdv) 14.09.10 18:38
(37) Пока работа с emf поддерживается только если изображение находится в буфере обмена. Постараюсь добавить поддержку и в режиме открытия из файла
39. Alxd (salexdv) 15.09.10 11:16
Добавил поддержку форматов emf и wmf в режиме открытия из файла
40. Сергей Максин (msw2010) 16.09.10 09:49
пробовал открыть emf через тест: ошибок не даёт, размеры картинки правильные, картинка пустая :(
41. Alxd (salexdv) 16.09.10 09:52
(40) Сбросте файл на "alxd" собачка "inbox.ru", я посмотрю
42. Сергей Максин (msw2010) 21.09.10 15:29
очень хочется поддержку emf ;)
43. Alxd (salexdv) 21.09.10 15:34
(42) Практически готова новая версия компоненты (написана с нуля и на др. языке), которая будет полностью поддерживать emf. Скоро размещу здесь. Если есть желание могу дать потестить ;)
44. Alxd (salexdv) 22.09.10 11:31
45. Alxd (salexdv) 22.09.10 11:39
(22) Попробуйте новую версии программы (добавил сохранение прозрачности фона у png)
46. Сергей Максин (msw2010) 24.09.10 21:25
Спасибо большое! Работает нормально. ;)
47. Александр Маляев (maljaev) 01.10.10 10:30
Про библиотеку GflAx не забывайте. В ней функционала-то поболее будет. Хотя я и приветствую новые разработки, если в них действительно что-то новое есть, а так какой смысл изобретать велосипед.
48. Alxd (salexdv) 01.10.10 10:41
(47) Видел я эту библиотеку. Да функционал у нее богаче, НО!
1) С ее помощью не нашел как добавлять без заморочек водяной знак
2) GraphicsNET - лишь часть (которой решил поделится) большой компоненты , используемой в моей конфигурации.
Согласитесь, удобнее пользоваться одной компонентой и, что не мало важно, дорабатывать ее функционал, чем использовать несколько различных решений.
49. Alxd (salexdv) 01.10.10 10:49
Исправил ошибку с вычислением координат водяного знака, когда он размещается в центре изображения
50. Александр Маляев (maljaev) 01.10.10 12:26
(48) Можно добавить водяной знак, с заморочками или без - это уж от опыта использования зависит. А вот насчет большой компоненты - это интересненько, можешь хотя бы вкратце сказать что туда входит? Выкладывать демку в широкие массы не собираешься?
51. Alxd (salexdv) 01.10.10 12:35
(50) Выкладывать не собираюсь. Просто собрал в одном месте все необходимые для работы данной конфы полезности, ну например, получение хеша MD5, быстрое извлечение данных из очень большого XML (700-800 мб) в txt, и т.п.
52. Женя Мохин (mevgenym) 01.10.10 13:09
В обработке. "Уменьшить на" действует только на ширину, причем иногда и пропорционально, примерно с третьего подрят клика начинает уменьшать только ширину.
53. Alxd (salexdv) 01.10.10 13:16
(52) Действительно, есть косяк с потерей пропорциональности. Исправлю. Спасибо за наблюдательность!
54. Сергей Ожерельев (Поручик) 04.02.11 00:32
При получении изображения из буфера обмена ПолучитьИзображение("") выскакивает раздражающее окно. Нельзя ли его выбросить нафиг?
Второй вопрос по поводу использования библиотеки в составе сторонних обработок.
55. Alxd (salexdv) 09.02.11 16:06
(54) По поводу окна проверю.
А в составе сторонних обработок можете пользовать сколько душе угодно
56. Pilokarpios Pilokarpios (Pilokarpios) 18.02.11 13:53
Хелп, протестил компоненту 1С 8.2. все работает!

а на 1С 77 не работает, что может быть?

ЗагрузитьВнешнююКомпоненту(ПолныйПутьККомпоненте);
ГрафикаВК = СоздатьОбъект("AddIn.GraphicsNET");

Пока Цикл

   ГрафикаВК.ПолучитьИзображение(ПутьКФайлуИсточник);
   Размер = Число(-30);
   ГрафикаВК.ИзменитьРазмерИзображения(ГрафикаВК.Ширина,,Размер,1);
   Сжатие = Число(50);
   ТипФайла = "jpg";
   ГрафикаВК.СохранитьИзображение(ПутьКФайлуСохранение,ТипФайла,Сжатие,0);

КонецЦикла;

ГрафикаВК.Закрыть();
...Показать Скрыть


Повторюсь, на 1с82 на том же компе работает
57. Alxd (salexdv) 18.02.11 14:12
(56) Во-первых, вместо
ЗагрузитьВнешнююКомпоненту(ПутьКФайлуИсточник);

следует писать
ПодключитьВнешнююКомпоненту("AddIn.GraphicsNET");


И еще, метод СохранитьИзображение во втором параметре принимает не стороку, а число
0 – bmp
1 – jpg
2 – png

И все будет работать
58. Pilokarpios Pilokarpios (Pilokarpios) 18.02.11 14:16
ок, спасибо,работает, воспользовался GraphicsVK, её проще удаленно зарегистрировать regsvr32
59. Alxd (salexdv) 18.02.11 14:21
(58) Вот только функционалом она не блещет :)
60. Pilokarpios Pilokarpios (Pilokarpios) 18.02.11 14:32
Мне главное сжать размер до 10%, остальное неважно

Есть проблема,

Пользуюсь все же:

ЗагрузитьВнешнююКомпоненту("GraphicsVK.dll");
ГрафикаВК = СоздатьОбъект("AddIn.GraphicsVK");


Все работает, но, пока программу не завершить (1cv77.exe), папка сохранения фотографий залочена компонентой, не удалить.

Даже если:

Процедура ПриЗакрытии()
ГрафикаВК = 0;
КонецПроцедуры
61. Alxd (salexdv) 18.02.11 14:45
(61) А вот это нехорошо, конечно. Посмотрю, как будет время
63. Ийон Тихий (cool.vlad4) 08.09.11 16:03
Есть золотая библиотека cxImage к которой также написаны ActiveX. Не требует dotnet. Советую для конвертирования, изменения, сжатия изображений.
64. Виталий Трач (vitalya24) 09.09.11 03:13
очень полезная штука, автору респект. Не очень удобно что нет метода который бы выводил размер файла картинки, хоть в 1с и есть такой метод, но здесь было бы удобнее
65. Alxd (salexdv) 09.09.11 08:31
(64) Спасибо! Если все таки дойдут руки до расширения функционала, обязательно добавлю этот метод.
66. Oleg Prophetic (prophetic) 07.11.11 09:57
Благодарю за компоненту. Используется на живую для обработки выгрузки из 1С на веб-сайт. Успехов!
67. Эдуард (suneagle) 14.11.11 11:14
Хорошая компонента, но у меня не получилось ее запустит на сервере.
Насколько я понимаю загвоздка в:
ПодключитьВнешнююКомпоненту("AddIn.GraphicsNET");

В таком виде запуск на сервере не возможен, а как изменить для регистрации на сервере так и не разобрался. Для данной библиотеки это возможно?
68. Alxd (salexdv) 14.11.11 19:22
(67) Нет, данная библиотека не будет работать на сервере
69. Алексей Миронов (a_mironov) 11.12.11 04:40
70. Alxd (salexdv) 11.12.11 14:36
71. Эдуард Неженцев (ErrorEd88) 30.01.12 18:59
У меня есть одна УТшка, где 7000 наименований номенклатуры и все с картинками. База файловая, очень сильно тормозит. Поможет ли мне эта разработка ускорить работу базы?
72. Alxd (salexdv) 30.01.12 19:12
(71) Эта компонента может помочь автоматизировать процесс сжатия(ресайзинга) изображений, что поможет уменьшить размер базы. Но вообще хранить 7000 картинок в файловой базе, по-моему, кощунство
73. Эдуард Неженцев (ErrorEd88) 30.01.12 19:42
74. Den Shilnikov (Denis_Shiln) 01.02.12 15:34
Не могу подключить к 7-ке. Windows XP, DLL-ка находится в BIN 1С-ки
на
ПодключитьВнешнююКомпоненту(GraphicsNET.dll);
GraphicsVK = СоздатьОбъект("AddIn.GraphicsVK");


Ошибка при создании объекта из компоненты <Неизвестная компонента> (отсутствует CLSID)
GraphicsVK = СоздатьОбъект("AddIn.GraphicsVK");
{F:\BASE\...\PRICE.ERT(975)}: Неудачная попытка создания объекта (AddIn.GraphicsVK)

а на
ЗагрузитьВнешнююКомпоненту(GraphicsNET.dll);
GraphicsVK = СоздатьОбъект("AddIn.GraphicsVK");


Ошибка при создании объекта из компоненты C:\Program Files\1Cv77\BIN\GraphicsNET.dll (отсутствует интерфейс IInitDone)
GraphicsVK = СоздатьОбъект("AddIn.GraphicsVK");
{F:\BASE\...\PRICE.ERT(977)}: Неудачная попытка создания объекта (AddIn.GraphicsVK)
75. Alxd (salexdv) 01.02.12 15:55
(74)
ЗагрузитьВнешнююКомпоненту(<ПутьКDLL>);
Graphics = СоздатьОбъект("AddIn.GraphicsNET");
Denis_Shiln; +1 Ответить
76. astars (astars) 02.08.12 11:22
Спасибо за компоненту. Планируется ли сделать возможным её запуск на сервере?
77. Александр Шкураев (salexdv) 02.08.12 11:57
78. Дмитрий Захарченко (umetex) 02.08.12 12:07
(76) astars, Думаю, вообще невозможно. Компонента написана под .net (c#), а на сервере компоненты могут работать только в том случае, если они написаны на c++ no CLR по технологии NativeAPI. Не думаю, что автор с удобного c# перейдёт на c++ для переноса либы :)
79. Александр Шкураев (salexdv) 02.08.12 12:31
(78) Именно поэтому и маловероятно :)
80. Сергей Ожерельев (Поручик) 23.08.12 20:31
(55) При получении изображения из буфера обмена ПолучитьИзображение("") выскакивает раздражающее окно. Нельзя ли его выбросить нафиг?
Сколько денег дать на перекомпиляцию библиотеки?
81. Сергей (Che) Коцюра (CheBurator) 24.08.12 01:30
Хочу: интеллектуальную обрезку!
На вход подсовываем файл изображения.
Изображение что-то там на однородном фоне. Фон намного больше собственно содержательного изображения.
На выходе - получаем обрезанный файл, который содержит собственно содержательное изображение с некоторым отсупом по сторонам прямоугольника с фоном -т.е. выкидываем нафиг из большого изображения все, что равно лишнему фону.
82. Сергей (Che) Коцюра (CheBurator) 24.08.12 01:33
для ряда задач можно успешно заюзать http://infostart.ru/public/15599/
84. Александр Шкураев (salexdv) 24.08.12 08:59
(80) Деньги!? Нее, не слышал )))
Перезалил. Скачайте еще раз
85. Сергей Ожерельев (Поручик) 24.08.12 20:38
(84) Вот это другое дело.
Но теперь не удаётся зарегистрировать компоненту на Windows 7 корпоративной (64 бит). Библиотеку засунул в каталог bin 1С Предприятия
Команда регистрации: regsvr32 "C:\Program Files (x86)\1cv82\8.2.15.319\bin\GraphicsNET.dll" выполняю под админскими правами.
Прикрепленные файлы:
86. Александр Шкураев (salexdv) 24.08.12 22:00
(85) Регистрируется через файл reg.bat, который находится в архиве. При этом файл RegAsm.exe тоже должен быть распакован в каталог с компонентой и батником
87. Сергей Ожерельев (Поручик) 24.08.12 22:18
(86) В этом случае выдётся сообщение, что RegAsm.exe не является исполняемым файлом. Скрин
Прикрепленные файлы:
88. Сергей Ожерельев (Поручик) 24.08.12 22:22
(86) Указываю полные абсолютные пути. Скрин
Прикрепленные файлы:
89. Сергей Ожерельев (Поручик) 24.08.12 22:28
Вот только так и получилось.
90. Sirruf (Sirruf) 20.11.13 13:02
Неприятная ошибка при попытке наложения водяного знака:
"Невозможно создать объект графики из изображения, имеющего формат с индексированными точками."
Пример картинки http://cdn0.sima-land.ru/items/726/726045/0/1600.jpg
91. Александр Шкураев (salexdv) 20.11.13 13:44
(90) Можно исходное изображение посмотреть и водяной знак?
92. Sirruf (Sirruf) 20.11.13 14:39
93. Александр Шкураев (salexdv) 21.11.13 09:41
(92) Оперативно решить проблему не получается. Могу посоветовать следующий выход:
Сначала получаете изображение (в данном конкретном случае 1600.jpg), затем сохраняете его (опять же с помощью компоненты). Потом снова получаете уже сохраненное изображение, и наносите на него водяной знак.
94. Sirruf (Sirruf) 21.11.13 09:55
95. Макс Зеленский (mzelensky) 18.12.13 10:22
Вопрос - можно ли сделать наложение водяного знака не через "Сверху\снизу\по центру", а через указание координакт. Ну или скажем в процентах от верхнего левого угла, те. например, 90%*50% (что означает наложить знакт на 90% вниз от верхнего угла и на 50% вправо от левого угла).

Было бы очень здорово!
96. Александр Шкураев (salexdv) 18.12.13 10:45
97. Макс Зеленский (mzelensky) 18.12.13 11:23
(96) salexdv, Спасибо! Постараюсь не пропустить обновление обработки.
98. Макс Зеленский (mzelensky) 18.12.13 11:28
И кстати еще вопрос. Можно ли как-то пересохранить файл формата pdf картинку (например в jpg или bmp)?
99. Александр Шкураев (salexdv) 18.12.13 11:43
(98) Нет, так сделать нельзя
100. Евгений _ (Johny_v) 21.03.14 15:35
Добрый день.
Хорошая компонента. Можно изменить порядок открытия изображения из буфера обмена?
Было бы правильнее не выводить окно с информацией "В буфере изображение", а сделать отдельный метод который будет проверять формат буфера обмена или просто возвращать текущий формат буфера.
Тогда можно будет самому проверить нужный формат при открытии.
101. Александр Шкураев (salexdv) 21.03.14 15:56
(100) Видимо это старая версия. Сейчас никаких надписей не выводится. Просто вызываете метод ПолучитьИзображение("") и работаете дальше с ним
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа