bdd2

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
89
.zip 4,21Mb 89 Скачать
GGraphics - внешняя компонента для работы с картинками
05.08.2016
2000 руб.

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

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

См. также

Добавить вознаграждение
Комментарии
1. Alxd (salexdv) 02.09.10 14:37 Сейчас в теме
Исправил недочет с прозрачными областями png при наложении "водяного знака"
2. Андрей Д. (detec) 122 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) 122 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) 122 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) 122 02.09.10 16:19 Сейчас в теме
Кажется, в демо-обработке есть баг. Я выбрал тип файлы - png, а после выбора пути сохранения мне выдало имя bmp.
12. Alxd (salexdv) 02.09.10 16:23 Сейчас в теме
(11) Значит в поле "Файл для сохранения" было написано ***.bmp, хотя формат сохраненного файла при этом все равно будет png
13. Аркадий Кучер (Abadonna) 3648 04.09.10 08:04 Сейчас в теме
(0) Как я понял из заголовка, ВК может работать и с 7.7.
Тогда вопрос: как задать в 7.7 тип Булево?
ВПроцентах – признак того, что все величины указаны в процентах. Тип: Булево

Нет его там вообще.
14. Alxd (salexdv) 04.09.10 10:56 Сейчас в теме
(13) Все просто, для 7.7 будет так:
0 - Ложь
Не нуль - Истина
15. Аркадий Кучер (Abadonna) 3648 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) 55 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) 430 09.09.10 16:19 Сейчас в теме
спасибо, компонента очень выручила ! желаю дальнейшего развития проекта ! ))
25. Alxd (salexdv) 09.09.10 16:22 Сейчас в теме
26. Альтаир (Altair777) 633 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) 4 10.09.10 16:05 Сейчас в теме
На чем написана компонента? (с целью подсказать возможные проблемы/улучшения)
31. Alxd (salexdv) 10.09.10 16:55 Сейчас в теме
32. Денис Яковлев (iceflash) 4 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) 4 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) 766 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) 766 01.10.10 12:26 Сейчас в теме
(48) Можно добавить водяной знак, с заморочками или без - это уж от опыта использования зависит. А вот насчет большой компоненты - это интересненько, можешь хотя бы вкратце сказать что туда входит? Выкладывать демку в широкие массы не собираешься?
51. Alxd (salexdv) 01.10.10 12:35 Сейчас в теме
(50) Выкладывать не собираюсь. Просто собрал в одном месте все необходимые для работы данной конфы полезности, ну например, получение хеша MD5, быстрое извлечение данных из очень большого XML (700-800 мб) в txt, и т.п.
52. Женя Мохин (mevgenym) 84 01.10.10 13:09 Сейчас в теме
В обработке. "Уменьшить на" действует только на ширину, причем иногда и пропорционально, примерно с третьего подрят клика начинает уменьшать только ширину.
53. Alxd (salexdv) 01.10.10 13:16 Сейчас в теме
(52) Действительно, есть косяк с потерей пропорциональности. Исправлю. Спасибо за наблюдательность!
54. Сергей Ожерельев (Поручик) 3443 04.02.11 00:32 Сейчас в теме
При получении изображения из буфера обмена ПолучитьИзображение("") выскакивает раздражающее окно. Нельзя ли его выбросить нафиг?
Второй вопрос по поводу использования библиотеки в составе сторонних обработок.
55. Alxd (salexdv) 09.02.11 16:06 Сейчас в теме
(54) По поводу окна проверю.
А в составе сторонних обработок можете пользовать сколько душе угодно
56. 1cinform.ru Программы для бизнеса (Pilokarpios) 22 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. 1cinform.ru Программы для бизнеса (Pilokarpios) 22 18.02.11 14:16 Сейчас в теме
ок, спасибо,работает, воспользовался GraphicsVK, её проще удаленно зарегистрировать regsvr32
59. Alxd (salexdv) 18.02.11 14:21 Сейчас в теме
(58) Вот только функционалом она не блещет :)
60. 1cinform.ru Программы для бизнеса (Pilokarpios) 22 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) 41 08.09.11 16:03 Сейчас в теме
Есть золотая библиотека cxImage к которой также написаны ActiveX. Не требует dotnet. Советую для конвертирования, изменения, сжатия изображений.
64. Виталий Трач (vitalya24) 198 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) 45 30.01.12 18:59 Сейчас в теме
У меня есть одна УТшка, где 7000 наименований номенклатуры и все с картинками. База файловая, очень сильно тормозит. Поможет ли мне эта разработка ускорить работу базы?
72. Alxd (salexdv) 30.01.12 19:12 Сейчас в теме
(71) Эта компонента может помочь автоматизировать процесс сжатия(ресайзинга) изображений, что поможет уменьшить размер базы. Но вообще хранить 7000 картинок в файловой базе, по-моему, кощунство
73. Эдуард Неженцев (ErrorEd88) 45 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) 1335 02.08.12 11:57 Сейчас в теме
78. Дмитрий Захарченко (umetex) 02.08.12 12:07 Сейчас в теме
(76) astars, Думаю, вообще невозможно. Компонента написана под .net (c#), а на сервере компоненты могут работать только в том случае, если они написаны на c++ no CLR по технологии NativeAPI. Не думаю, что автор с удобного c# перейдёт на c++ для переноса либы :)
79. Александр Шкураев (salexdv) 1335 02.08.12 12:31 Сейчас в теме
(78) Именно поэтому и маловероятно :)
80. Сергей Ожерельев (Поручик) 3443 23.08.12 20:31 Сейчас в теме
(55) При получении изображения из буфера обмена ПолучитьИзображение("") выскакивает раздражающее окно. Нельзя ли его выбросить нафиг?
Сколько денег дать на перекомпиляцию библиотеки?
81. Сергей (Che) Коцюра (CheBurator) 3366 24.08.12 01:30 Сейчас в теме
Хочу: интеллектуальную обрезку!
На вход подсовываем файл изображения.
Изображение что-то там на однородном фоне. Фон намного больше собственно содержательного изображения.
На выходе - получаем обрезанный файл, который содержит собственно содержательное изображение с некоторым отсупом по сторонам прямоугольника с фоном -т.е. выкидываем нафиг из большого изображения все, что равно лишнему фону.
82. Сергей (Che) Коцюра (CheBurator) 3366 24.08.12 01:33 Сейчас в теме
для ряда задач можно успешно заюзать http://infostart.ru/public/15599/
84. Александр Шкураев (salexdv) 1335 24.08.12 08:59 Сейчас в теме
(80) Деньги!? Нее, не слышал )))
Перезалил. Скачайте еще раз
85. Сергей Ожерельев (Поручик) 3443 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) 1335 24.08.12 22:00 Сейчас в теме
(85) Регистрируется через файл reg.bat, который находится в архиве. При этом файл RegAsm.exe тоже должен быть распакован в каталог с компонентой и батником
87. Сергей Ожерельев (Поручик) 3443 24.08.12 22:18 Сейчас в теме
(86) В этом случае выдётся сообщение, что RegAsm.exe не является исполняемым файлом. Скрин
Прикрепленные файлы:
88. Сергей Ожерельев (Поручик) 3443 24.08.12 22:22 Сейчас в теме
(86) Указываю полные абсолютные пути. Скрин
Прикрепленные файлы:
89. Сергей Ожерельев (Поручик) 3443 24.08.12 22:28 Сейчас в теме
Вот только так и получилось.
90. Sirruf (Sirruf) 121 20.11.13 13:02 Сейчас в теме
Неприятная ошибка при попытке наложения водяного знака:
"Невозможно создать объект графики из изображения, имеющего формат с индексированными точками."
Пример картинки http://cdn0.sima-land.ru/items/726/726045/0/1600.jpg
91. Александр Шкураев (salexdv) 1335 20.11.13 13:44 Сейчас в теме
(90) Можно исходное изображение посмотреть и водяной знак?
92. Sirruf (Sirruf) 121 20.11.13 14:39 Сейчас в теме
93. Александр Шкураев (salexdv) 1335 21.11.13 09:41 Сейчас в теме
(92) Оперативно решить проблему не получается. Могу посоветовать следующий выход:
Сначала получаете изображение (в данном конкретном случае 1600.jpg), затем сохраняете его (опять же с помощью компоненты). Потом снова получаете уже сохраненное изображение, и наносите на него водяной знак.
94. Sirruf (Sirruf) 121 21.11.13 09:55 Сейчас в теме
95. Макс Зеленский (mzelensky) 51 18.12.13 10:22 Сейчас в теме
Вопрос - можно ли сделать наложение водяного знака не через "Сверху\снизу\по центру", а через указание координакт. Ну или скажем в процентах от верхнего левого угла, те. например, 90%*50% (что означает наложить знакт на 90% вниз от верхнего угла и на 50% вправо от левого угла).

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