- Метки дополнения:
- изображения
- скрипт
- web 2.0
- web дизайн
- jquery
Плагин для использования веб-камеры
Плагин jQuery для подключения веб камеры создает прозрачный слой для связи с камерой непосредственно с помощью JavaScript.
Описание
Данный плагин обеспечивает три различных режима для доступа к веб камере с помощью маленького API непосредственно с помощью JavaScript (точнее, с помощью jQuery). Таким образом, возможно получать изображение в элемент canvas (режим callback), сохранять изображение на сервере (режим save) и добавлять поток живого видео для элемента Flash (режим stream).
Сайт проекта плагина jQuery для подключения веб камеры
Общее описание интерфейса
$("#camera").webcam({ width: 320, height: 240, mode: "callback", swffile: "jscam_canvas_only.swf", onTick: function() {}, onSave: function() {}, onCapture: function() {}, debug: function() {}, onLoad: function() {} });
Параметры конфигурации
width
Ширина flash видео.
height
Высота flash видео. Если изменения вносятся в оба параметра, то нужно производить также изменения в Flash файле. Следуйте ниже приведенной инструкции для перекомпиляции swf файла после изменения размеров.
mode
Режим сохранения может иметь следующие значения: callback, save, stream. Детальное описание использования каждого параметра приводится ниже.
swffile
swf файл Flash видео, который обеспечивает API веб камеры. В архиве имеется два swf файла: jscam.swf, который содержит полную версию API, и jscam_canvas_only.swf, в который не включена библиотека для обработки JPEG (используется JPGEncoder AS 3 corelib). Второй файл имеет в три раза меньший размер.
onTick, onSave, onCapture
Возвратные функции, назначение которых описано ниже.
onLoad
Возвратная функция onLoad вызывается после завершения регистрации интерфейса. В приведенном примере используется функция, которая получает список всех доступных веб камер:
onLoad: function() { var cams = webcam.getCameraList(); for(var i in cams) { jQuery("#cams").append("<li>" + cams[i] + "</li>"); } }
Как только вызывается функция onLoad становится доступным глобальный объект window.webcam, который поддерживает следующие методы:
- capture([задержка])
Захват изображения. - save([файл])
Сохранение захваченного изображения в соответствующем режиме хранения. - getCameraList()
Возвращает массив доступных веб камер. Если веб камер нет, генерируется исключение и возвращается пустой массив. - setCamera([индекс])
Переключение на другую камеру. Параметр явлется индексом элемента в массиве, возвращаемом методом getCameraList()
debug
Возвратная функция debug вызывается в том случае, если есть сообщение с информацией или об ошибке. В приведенном примере просто изменяется HTML содержимое контейнера вывода:
debug: function (type, string) { $("#status").html(type + ": " + string); }
Режим callback
Возвратные функции используются для получения данных и записи их, например, в элемент canvas, как в приведенном примере
Работа происходит следующим образом. После завершения загрузки страницы и принятия установок безопасности для Flash, пользователь увидит картинку с веб камеры. Затем можно запустить метод window.capture(). Данный метод в качестве параметра принимает значение для времени задержки перед захватом изображения. Для индикации оставшегося времени вызывается метод onTick() каждую секунду. Данный метод получает в качестве параметра оставшееся время в секундах. В примере просто изменяется сообщение:
onTick: function(remain) { if (0 == remain) { jQuery("#status").text("Улыбочку!"); } else { jQuery("#status").text(remain + " секунд осталось..."); } }
После завершения копирования вызывается метод onCapture, который в приведенном примере сразу же вызывает метод webcam.save() для записи изображения в элемент canvas. В коде примере также используется небольшая хитрость для имитации вспышки с помощью лайтбокса и метода jQuery fadeOut().
onCapture: function () { jQuery("#flash").css("display", "block"); jQuery("#flash").fadeOut("fast", function () { jQuery("#flash").css("opacity", 1); }); webcam.save(); }
Для каждой строки вызывается метод onSave(), который получает целые значения цвета CSV, разделенные точкой с запятой. Для записи данных в элемент canvas в примере используется следующая функция:
onSave: function(data) { var col = data.split(";"); var img = image; for(var i = 0; i < 320; i++) { var tmp = parseInt(col[i]); img.data[pos + 0] = (tmp >> 16) & 0xff; img.data[pos + 1] = (tmp >> 8) & 0xff; img.data[pos + 2] = tmp & 0xff; img.data[pos + 3] = 0xff; pos+= 4; } if (pos >= 4 * 320 * 240) { ctx.putImageData(img, 0, 0); pos = 0; } }
Режим save
C точки зрения обработки режим save почти идентичен режиму callback. Разница заключается в том, что метод webcam.save() получает имя файла в качестве параметра. Затем сохраненное изображение отправляется с помощью HTTP_RAW_POST_DATA на сервер и может быть обработано с использованием следующего кода для сохранения или дальнейшей обработки (Внимание, проверка ввода здесь не рассматривается!).
webcam.save('/upload.php');
На стороне сервера можно получить изображение следующим образом:
<?php $str = file_get_contents("php://input"); file_put_contents("/tmp/upload.jpg", pack("H*", $str)); ?>
Режим stream
Режим stream также очень похож на режим callback. Разница заключается в том, что метод onSave вызывается непрерывно. Поток запускается с помощью метода webcam.capture(). Метод webcam.save() не действует.
Перекомпиляция Flash файлов
Если вы внесли изменения в код или просто поменяли размеры видео в файле спецификации XML, то нужно провести перекомпиляцию swf файла. Перекомпиляция запускается из консоли Linux с помощью файла Makefile. Для выполнения работы требуется два программных пакета: swfmill и mtasc, которые можно легко установить с помощью команды apt-get:
apt-get install swfmill mtasc vim src/jscam.xml make
5 последних добавленных файлов в рубрике"Скрипты"
-
Плагин для создания круговых обзорных изображений с управлением курсором
ThreeSixty - плагин jQuery для создания из серии изображений кругового обзорного представления, которое управляется с помощью мыши или курсора.
-
Набор стилей для чекбоксов
9 наборов правил для оформления чекбоксов на страницах и формах веб проекта.
-
Выскальзывающие счетчики категорий
Набор правил CSS для формирования выскальзывающих ярлыков с количеством записей в категории или метке.
-
Круглый элемент управления на CSS
Набор правил и разметка для организации оригинального элемента управления для веб проекта.
-
CSS код индикатора загрузки
Интересный индикатор загрузки, сделанный без использования изображений и JavaScript.