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

Система такая же, как использовать BloggerSnap , сервис, невероятный успех в его запуска и, кажется, закрыт с апреля. Год назад эта должность была более 40000 в Alexa , был, вероятно, еще выше. Я думаю, это будет очень трудно сохранить стоимость полосы пропускания так популярны. Через пару лет мы собираемся запустить подобный сервис и закрыть на это глаза, потому что мы не видим способ монетизации пока мало, чтобы быть успешным, затраты будут значительно усилится.

В нормальном сценарии будет зависеть от пользователей программного обеспечения будет установлен на фото, что было сделано, и тогда я послал его, что бы не получить целью мгновенной, но есть решение, которое может делать все, через он-лайн заявки: Flash В нашем случае Flex :P .

Власти Flash Platform для лечения аудио и видео идет гораздо дальше, чем может показаться для создания мультимедийных приложений и расширенный участия пользователя довольно быстро. Если у вас есть достаточно денег, также могут быть объединены с Flash Media Server и ограничивается только вашей фантазией. Еще один день мы создадим видеочат ;) .

Ключ доступа к камере и микрофону платформы Flash, которая позволяет пользователю разрешение, это очевидно. Если разрешено, то плеер подключается к веб-камеру и начать показывать видео, и если приложение требует, отправить его другим пользователям. То же самое можно сделать со звуком.

В мастерской сегодня сделать небольшое приложение для создания мгновенных веб галерея / блога. Пользователи, желающие могут принять фото с вашим собственным веб-камера, и он будет размещен в галерее. Простой, но яркий.

Приложение будет состоять из двух частей:

  • Район поймать: приложение, разработанное в Flex, которая позволит пользователям снимать без дальнейшей необходимости иметь веб-камеру.
  • Галерея: простой HTML-страницу, где перечислены все фотографии, которые стали пользователями.

Захват изображений

Хотя это может показаться очень сложным, мы увидим, что легкость подключения к веб-камере в Flex является весьма впечатляющим.

Наше приложение состоит из двух компонентов, изображения и кнопки. Изображений только дать нам стиль и использовать кнопки вызвать нашего интернет-камеры.

Есть три различных задач:

  • Связь с веб-камеры.
  • Захват изображения.
  • Отправить его на наш сервер.

Связь с веб-камеры

С помощью этого простого кода будет просматривать веб-камера в нашем приложении, что пользователь подключен к компьютеру.

  1. insertWebcamVideo ( ) : void { insertWebcamVideo частные функции (): недействительным (
  2. UIComponent ( ) ; VAR videoHolder: UIComponent = новый UIComponent ();
  3. Camera . names . length > 0 ) { если (Camera. имена. длина> 0) (
  4. . getCamera ( ) ; = фотокамера камеры. getCamera ();
  5. camera == null || camera . width == -1 || camera . height == -1 || camera . fps == -1 ) { если (камеры == NULL | | камеры. ширина == -1 | | камеры. высоте == -1 | | камеры. кадр == -1) (
  6. "Lo sentimos, no tienes cámara" , "Error" , 4 , null , null , iconoAlerta ) ; Alert. Шоу ("Извините, у вас нет камеры", "Ошибка", 4, NULL, NULL, iconoAlerta)
  7. ; захвата. включен = ложь;
  8. ; камера = NULL;
  9. { Остальное ()
  10. ( StatusEvent. STATUS , cerrar ) ; камеры. addEventListener (StatusEvent. СТАТУС, закрытие)
  11. Video ( camera . width , camera . height ) ; видео = новое видео (camera. ширина камеры. высоты);
  12. ( camera ) ; видео. attachCamera (камера);
  13. video ) ; videoHolder. addChild (видео)
  14. . width ; videoHolder. ширина = видео. ширины;
  15. . height ; videoHolder. высота = видео. высоты;
  16. ; videoHolder. Visible = True;
  17. ; videoHolder. у = 0;
  18. videoHolder, 0 ) ; поле. addChildAt (videoHolder, 0);
  19. fotillo ) ; поле. removeChild (fotillo)
  20. )
  21. { Остальное ()
  22. "Lo sentimos, no tienes cámara" , "Error" , 4 , null , null , iconoAlerta ) ; Alert. Шоу ("Извините, у вас нет камеры", "Ошибка", 4, NULL, NULL, iconoAlerta)
  23. ; захвата. включен = ложь;
  24. )
  25. / / Security.showSettings (SecurityPanel.CAMERA)
  26. )

Как легко, как проверка первых, если у вас есть камера (но, очевидно, не может снимать фотографии :P ), А затем добавить к видео компонент, который мы построили UIComponent для показа на приложения. На данный момент у нас есть камеры пользователь живет в заявлении.

Захват фотография

После видео-поток в приложение, мы хотим, чтобы, когда пользователь нажимает на кнопку "Capture" примет картину.

  1. getSnapshot ( ) : void { getSnapshot частные функции (): недействительным (
  2. BitmapData ( video . width , video . height , true ) ; VAR снимке: BitmapData = новый BitmapData (video. ширина, видео. высоте, правда);
  3. Matrix ( ) ; уаг т: Matrix = новая матрица ();
  4. video , m ) ; снимка. вничью (видео, м);
  5. JPGEncoder ( 75 ) ; VAR jpegEnc: JPGEncoder = новый JPGEncoder (75);
  6. ( snapshot ) ; VAR jpegDat: ByteArray = jpegEnc. кодирования (снимок);
  7. = base64Encode ( jpegDat ) ; VAR img_src: String = base64Encode (jpegDat)
  8. img_src. length > 1600 ) { если (img_src. длина> 1600) (
  9. / / Отснятые изображения правильно
  10. { Остальное ()
  11. "La imagen capturada parece estar vacía" , "Error" , 4 , null , null , iconoAlerta ) ; Alert. Шоу ("снимок выглядит пустым", "Ошибка", 4, NULL, NULL, iconoAlerta)
  12. )
  13. )

При этом другой код получил этот эффект. Вы получаете побитовое захвата видео объекта и сжимается в JPEG, чтобы отправить на сервер. У нас есть снимок!

Отправить фото

Мы будем использовать HTTPService отправить фото POST мы сделали, и мы будем хранить в базе данных. Мы добавляем к предыдущим код функции отправить фото.

  1. getSnapshot ( ) : void { getSnapshot частные функции (): недействительным (
  2. BitmapData ( video . width , video . height , true ) ; VAR снимке: BitmapData = новый BitmapData (video. ширина, видео. высоте, правда);
  3. Matrix ( ) ; уаг т: Matrix = новая матрица ();
  4. video , m ) ; снимка. вничью (видео, м);
  5. JPGEncoder ( 75 ) ; VAR jpegEnc: JPGEncoder = новый JPGEncoder (75);
  6. ( snapshot ) ; VAR jpegDat: ByteArray = jpegEnc. кодирования (снимок);
  7. = base64Encode ( jpegDat ) ; VAR img_src: String = base64Encode (jpegDat)
  8. img_src. length > 1600 ) { если (img_src. длина> 1600) (
  9. = new Object ( ) ; Темп VAR: Object = новый Object ();
  10. Темп. img_src = изображения;
  11. temp ) ; HTTPService. Отправки (Темп);
  12. ( this as DisplayObject, ventanaEspera, true ) ) ; cargandoWindow = ventanaEspera (PopUpManager. createPopup (это как DisplayObject, ventanaEspera, правда));
  13. { Остальное ()
  14. "La imagen capturada parece estar vacía" , "Error" , 4 , null , null , iconoAlerta ) ; Alert. Шоу ("снимок выглядит пустым", "Ошибка", 4, NULL, NULL, iconoAlerta)
  15. )
  16. )
  17. useproxy= "false" method= "POST" resultformat= "text" url = "upload.php" result= "onResult()" <Mx: HTTPService ID = "HTTPService" showbusycursor = "ложных" UseProxy = "ложных" метод = "POST" resultformat = "текст" URL = "upload.php" Результат = "onResult ()"
  18. вина = "onHTTPFault (события)" />

Там. Upload.php скрипт на ваш сервер POST переменной "картинки" с содержанием вашей фотографии. Там должны быть сохранены в файл, и вы сделали самые "сложные? проекта.

  1. $_POST [ 'imagen' ] & strlen ( $_POST [ 'imagen' ] ) != 0 & strlen ( $_POST [ 'imagen' ] ) > 1600 ) { если ($ ['образ _POST'] и StrLen ($ ['образ _POST'])! = 0 и StrLen ($ ['образ _POST'])> 1600) (
  2. ( $_POST [ 'imagen' ] ) ; $ BMD = base64_decode ($ ['образ _POST']);
  3. ( "fotos/foto.jpg" , 'w' ) ; Im = $ FOPEN ("фотографии foto.jpg", "W");
  4. $im , $bmd ) ; FWRITE ($ им, $ ПРО);
  5. $im ) ; fclose ($ мкм);
  6. )

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

Создание Галерея

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

Выводы

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

Скачать здесь код проекта.

Если вы оказались полезными эту статью ... Разделять!