Пример работы с Web камерой (WIA)

31.10.12

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

Делаем фото с веб камеры.
Используем стандартную библиотеку Windows Image Acquisition Automation Library. Библиотеку wiaaut.dll качаем (из инета, бесплатно), регистрируем командой regsvr32.

Скачать файл

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

Наименование По подписке [?] Купить один файл
ПримерWIA.ert
.ert 49,50Kb
74
74 Скачать (1 SM) Купить за 1 850 руб.
ПримерWIA2.ert
.ert 203,50Kb
87
87 Скачать (1 SM) Купить за 1 850 руб.

Пример 1: // самый простой (с вызовом диалога) (ПримерWIA.ert)

Device = CreateObject("WIA.CommonDialog");
Image = Device.ShowAcquireImage();
Image.SaveFile(Файл);

Пример 2: // делаем снимок как повезет (ПримерWIA.ert)

Device = CreateObject("WIA.DeviceManager");
Количество = Device.DeviceInfos.Count;
Для ин=1 По Количество Цикл
	Если Device.DeviceInfos(ин).Type = 3 Тогда // тип устройства (VideoDeviceType)
		dev = Device.DeviceInfos(ин).Connect();
		Item = dev.ExecuteCommand("{AF933CAC-ACAD-11D2-A093-00C04F72DC3C}"); // сделать снимок (wiaCommandTakePicture)
		Image = Item.Transfer("{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"); // в формат JPG (wiaFormatJPEG)
		Image.SaveFile(Файл);
		Прервать;
	КонецЕсли;
КонецЦикла;

Пример 3: // выводим на форму изображение с камеры (ActiveX), делаем снимок (ПримерWIA2.ert)

Процедура СделатьФото()
	Item = АктивИксWIA.Объект.Device.ExecuteCommand("{AF933CAC-ACAD-11D2-A093-00C04F72DC3C}"); // сделать снимок
	Image = Item.Transfer("{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"); // в формат JPG (wiaFormatJPEG)
	Image.SaveFile(Файл);
КонецПроцедуры

Процедура ПослеОткрытия()
	АктивИксWIA = СоздатьОбъект("АктивИкс"); 
	АктивИксWIA.УстановитьАтрибут(Форма, "ФАктивИксWIA"); 
	Device = CreateObject("WIA.DeviceManager");
	Количество = Device.DeviceInfos.Count;
	Для ин=1 По Количество Цикл
		Если Device.DeviceInfos(ин).Type = 3 Тогда // тип устройства (VideoDeviceType)
			АктивИксWIA.СоздатьЭУ("WIA.VideoPreview"); 
			АктивИксWIA.Объект.Device=Device.DeviceInfos(ин).Connect();
			Прервать;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

Вариант ActiveX предпочтительнее тем, что не тратится время на "разогрев" камеры (время на включение, на настройку яркости).


См. также

Разработка внешних компонент Системный администратор Программист Платформа 1С v7.7 Платформа 1С v8.3 Платформа 1C v8.2 Платформа 1С v8.1 Россия Платные (руб)

Аддон "Структура Обмена" (ExchangeStruc) - это компонента, которая обеспечивает доступ к разделяемым процессом структурам, аналогичным структурам 1С. Обеспечивает прозрачную передачу данных примитивных типов, в том числе Двоичных данных, в режиме Реального времени между разными контекстами (формами) или потоками одного процесса. В перспективе функционал будет расширен для обмена между процессами, даже разных версий платформ. Совместим с версиями Windows рабочих станций и серверов, с платформами 1С разных версий и релизов в режиме Native начиная с 8.2, и в режиме COM начиная с версий 7.7. По скорости чтения и записи лишь немногим уступает стандартной структуре 1С. НОВОЕ: Добавлен функционал регистрации компоненты COM в качестве OLE Auto (COMОбъект) для поддержки её работы в серверах старых версий 1С: 8.0 и 8.1, где работа с компонентами исключена. Теперь можно коммуникацию с Фоновыми заданиями на этих версиях проводить.

7200 руб.

19.04.2023    5303    1    0    

3

Разработка внешних компонент WEB-интеграция Программист Платформа 1С v7.7 Конфигурации 1cv7 Платные (руб)

Компонента HttpSrv7 позволяет создавать веб-сервисы в среде 1С 7.7 и даже, используя файлы HTML, несложные веб-сайты. С помощью нее можно обеспечить доступ к данным 1С 7.7 из браузера. Дополнительно используя компоненту HTTP_Async или синхронный клиент HTTP для 1С 7.7 (публикация № 1152364) можно наладить обмен данными между удаленными информационными базами. С помощью компоненты HTTP_Async можно сначала послать несколько запросов к сайтам, веб-сервисам (в т.ч. к HttpSrv7), а затем обрабатывать данные по мере их поступления. Компонента GISMT в дополнение к HTTP_Async имеет функцию цифровой подписи и, таким образом, имеет все возможности для работы с API ГИС МТ "Честный знак" непосредственно из среды 1С 7.7.

2000 руб.

27.05.2022    8986    23    17    

34

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

Компонента для выбора значения из больших списков значений.

1200 руб.

02.12.2021    6277    2    19    

4

Разработка внешних компонент Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Эта внешняя компонента Base64.dll предназначена для платформы 1С версии 7.7. Используется для преобразования файлов из/в кодировку Base64 из встроенного языка 1С Предприятие. Компонента тестировалась на базе конфигурации Бухгалтерский учет для Казахстана, редакции 7.70.257.

10 стартмани

06.04.2021    10075    14    softmaker    13    

5

Разработка внешних компонент Защита ПО и шифрование Программист Платформа 1С v7.7 Абонемент ($m)

Цифровые подписи, шифрование, просмотр сертификатов ключей ЭЦП, работа с различными криптопровайдерами (в т.ч. КриптоПРО ГОСТ 2012) в 1С 7.7.

1 стартмани

08.06.2020    9454    28    mdbruyfn    10    

9

Разработка внешних компонент Программист Платформа 1С v7.7 Абонемент ($m)

Обмен сообщениями и небольшими файлами по протоколу UDP с 1С и внешними приложениями в локальной сети или сети VPN.

1 стартмани

23.05.2020    7638    7    mdbruyfn    0    

6

Разработка внешних компонент WEB-интеграция Программист Платформа 1С v7.7 Абонемент ($m)

Компонента позволяет использовать различные веб-сервисы интернет-ресурсов, например работать с онлайн-кассой через API, предоставленное ее разработчиком. Тестировалась на платформе 1С релиза 7.70.027.

1 стартмани

14.11.2019    19398    108    mdbruyfn    105    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bog2009 23.10.12 11:28 Сейчас в теме
2. bog2009 23.10.12 11:33 Сейчас в теме
Для 8.*
Device = Новый COMОбъект("WIA.CommonDialog");
Image = Device.ShowAcquireImage();
Если НЕ Image=Неопределено Тогда
Image.SaveFile(Файл);
КонецЕсли;
frkbvfnjh; sevushka; krein; shmellevich; Воронкин; via; +6 Ответить
3. iov 407 01.11.12 02:51 Сейчас в теме
(0) Иди суды я тя расцалую... прям вот вовремя ты это дело выложил.. я уже думал писать придется :)
4. dusha0020 1118 07.12.12 15:13 Сейчас в теме
WIA.CommonDialog у меня не стартует. Точнее где-то стартует, а где-то нет. Сам недавно писал что-то подобное, но когда перенес на теститрование на W7 с XP 1C-ка начала такие ошибки выдавать, что гугл завернулся (и я вместе с ним). Вот эта штука работает везде. Рекомендую.
5. via 93 07.12.12 15:49 Сейчас в теме
(4) dusha0020, Мне тот вариант как-то не очень понравился (каждый раз настройки выскакивали... иногда v7 выкидывало)... а тут постабильнее получилось (в сети магазинов используется)... из всех вариантов этот самым удачным получился.
6. dusha0020 1118 07.12.12 16:20 Сейчас в теме
(5) Да там есть проблемы с корректной остановкой компоненты, но как-то удалось стабилизировать. Перестал открывать - закрывать камеру для каждой фотки и заработало стабильно. Плюс выбор параметров устройства позволяет на навороченных камерах все-таки подстраивать разрешение и глубину цвета перед началом съемки. На последнем тесте дети 20 минут себя фоткали по всякому и никаких сбоев.
WIA, однако, пригодилась в другом месте. Так пригодилась, что даже публикацию делаю по мотивам. О подробностях естественно пока умолчу:)
7. mikmike 9 20.11.13 12:47 Сейчас в теме
(6) dusha0020, не срослось с публикацией?
8. dusha0020 1118 20.11.13 13:16 Сейчас в теме
9. mikmike 9 20.11.13 13:34 Сейчас в теме
(8) dusha0020, спасибки за оперативность. Ссылка попала в мой архив - мало ли когда пригодиться сможет.
10. dddonnn 28.02.14 10:24 Сейчас в теме
В примере 2 когда сразу веб-камера фотографирует, то чаще всего фотография сохраняется как половинчатая, как будто изображение не успевает сфотографироваться. Скажите, как можно избавиться от этой ошибки?
11. via 93 28.02.14 16:52 Сейчас в теме
(10) dddonnn, было и у меня такое (на некоторых web-камерах).. мне помогло: пауза после ...ExecuteCommand(... Скокато милисекунд (подбирается по ситуации).. После этого есть надежда, что фото готово и можно уже дальше работать (делать ...Transfer(... и ....SaveFile(... )
12. dddonnn 21.04.14 16:19 Сейчас в теме
Количество = Device.DeviceInfos.Count; на Win 7 возвращает 0. Подскажите, как бороться с этим траблом?
13. via 93 22.04.14 06:13 Сейчас в теме
(12) dddonnn, знал бы прикуп, жил бы в Сочи.. Используй http://infostart.ru/public/84693/
Светлый ум; +1 Ответить
14. kitminsk 205 29.11.14 19:22 Сейчас в теме
Количество = Device.DeviceInfos.Count; на Win 7 возвращает 0. Подскажите, как бороться с этим траблом? Может кто все-таки поборол?
15. kitminsk 205 29.11.14 19:30 Сейчас в теме
Для первого примера в той же семерке
{D:\DB1C\77\ВЕБКАМЕРА\EXTFORMS\ПРИМЕР.ERT(73)}: WIA.CommonDialog.1: Не доступно ни одно WIA-устройство выбранного типа.
Кто-нибудь на 7 винде работал с wia???
16. via 93 01.12.14 10:55 Сейчас в теме
(15) kitminsk, Верно.. там не робит.. поэтому пришлось другое использовать
17. Andrekaa 23.03.15 15:05 Сейчас в теме
а как сделать чтобы
Device = Новый COMОбъект("WIA.CommonDialog");
вызова диалога не было?
18. Vlaloplo 29.10.20 14:37 Сейчас в теме
Привет, а что делать если при вызове форма>>вставить ActiveX, открывается меню с библиотеками, но нет нужной :(. (нет, не глупый, компонент в системе зарегистрирован, но в 1с его почему то нет) Помогите, а)
19. via 93 30.10.20 07:33 Сейчас в теме
(18)
библиотеками

Если WIA на компе нет, то пользуйся WebCamX
Оставьте свое сообщение