L'idée est simple, connectez-vous avec votre webcam utilisateurs, nous faisons une photo et l'envoyer à une galerie où vous pouvez voir les masques de vos visiteurs. La mise en œuvre est presque aussi simple que la théorie et le résultat est incroyable et original.

Le système est le même que celui utilisé BloggerSnap , un service qui a connu un succès incroyable dans son lancement et il semble fermé depuis avril. Il ya un an, l'emploi était supérieur à 40.000 en Alexa , a probablement été encore plus élevé. Je suppose qu'il serait très difficile de maintenir le coût de la bande passante si populaire. Un couple d'années nous étions sur le point de lancer un service semblable et de le rejeter parce que nous n'avons pas vu un moyen de rentabiliser un peu tout pour réussir, les coûts montent en flèche.

Dans un scénario normal dépend du logiciel utilisateur devrait être installé à la photo qui a été fait et puis je l'ai envoyée, qui ne serait pas obtenir le but de l'instantané, mais il ya une solution qui peut tout faire par le biais d'une demande en ligne: Flash Dans notre cas, Flex :P .

La puissance de la plate-forme Flash dans le traitement de l'audio et la vidéo va bien au-delà de ce qui peut sembler pour créer des applications multimédias et la participation des utilisateurs avancés assez rapidement. Si vous avez suffisamment d'argent peut également être combiné avec Flash Media Server et n'est limitée que par votre imagination. Un autre jour, nous allons créer un videochat ;) .

La clé est l'accès à la caméra et le microphone de la plate-forme Flash qui permet à l'utilisateur l'autorisation, évidemment. S'il y est autorisé, le joueur se connecte à votre webcam et commencer à diffuser la vidéo de celui-ci et, si la demande l'exige, l'envoyer à d'autres utilisateurs. La même chose peut être fait avec l'audio.

Dans l'atelier d'aujourd'hui fera une petite application pour créer une galerie web instantanée / blog. Les utilisateurs qui le souhaitent peuvent prendre la photo avec votre propre webcam et il sera installé dans la galerie. Simple, mais la suppression.

L'application se composera de deux parties:

  • Zone de capture: une application développée en Flex qui permettra aux utilisateurs de prendre des photos sans le besoin d'avoir une webcam.
  • Galerie: une page HTML simple qui répertorie toutes les photos qui sont devenus des utilisateurs.

Capture d'images

Bien qu'il puisse sembler très difficile de voir alors que la facilité de se connecter à la webcam en Flex est très impressionnant.

Notre application se compose de seulement deux composants, une image et un bouton. L'image vient de nous donner un peu de style et d'utiliser le bouton de déclenchement de notre caméra en ligne.

Il ya trois tâches distinctes:

  • Contacts avec la webcam.
  • Capture de la photo.
  • Envoyez-le à votre serveur.

Connectez-vous à la webcam

Avec ce code simple visionner la webcam dans notre application que l'utilisateur s'est connecté à votre ordinateur.

  1. insertWebcamVideo ( ) : void { insertWebcamVideo private function (): void (
  2. UIComponent ( ) ; videoHolder var: UIComponent = UIComponent new ();
  3. Camera . names . length > 0 ) { if (noms Camera.. longueur> 0) (
  4. . getCamera ( ) ; appareil photo =. getCamera ();
  5. camera == null || camera . width == -1 || camera . height == -1 || camera . fps == -1 ) { if (photo == null | | caméra. largeur == -1 | | caméra. hauteur == -1 | | caméra. fps == -1) (
  6. "Lo sentimos, no tienes cámara" , "Error" , 4 , null , null , iconoAlerta ) ; Alerte. Show ("Désolé, vous n'avez pas de caméra," Erreur ", 4, NULL, NULL, iconoAlerta)
  7. ; capture. enabled = false;
  8. ; caméra = null;
  9. { Autres ()
  10. ( StatusEvent. STATUS , cerrar ) ; appareil photo. addEventListener (StatusEvent. ETAT, à proximité)
  11. Video ( camera . width , camera . height ) ; video = nouvelle vidéo (largeur camera., un appareil photo. hauteur);
  12. ( camera ) ; vidéo. attachCamera (huis clos);
  13. video ) ; videoHolder. addChild (vidéo)
  14. . width ; videoHolder. largeur de la vidéo =. largeur;
  15. . height ; videoHolder. hauteur de la vidéo =. hauteur;
  16. ; videoHolder. Visible = true;
  17. ; videoHolder. y = 0;
  18. videoHolder, 0 ) ; boîte. addChildAt (videoHolder, 0);
  19. fotillo ) ; boîte. removeChild (fotillo)
  20. )
  21. { Autres ()
  22. "Lo sentimos, no tienes cámara" , "Error" , 4 , null , null , iconoAlerta ) ; Alerte. Show ("Désolé, vous n'avez pas de caméra," Erreur ", 4, NULL, NULL, iconoAlerta)
  23. ; capture. enabled = false;
  24. )
  25. / / Security.showSettings (SecurityPanel.CAMERA)
  26. )

Aussi facile que d'abord vérifier si vous avez webcam (mais ne peut évidemment pas prendre des photos :P ), Puis l'ajouter à un composant vidéo que nous avons ajouté à un UIComponent à afficher sur la demande. En ce moment nous avons la caméra de l'utilisateur en direct sur la demande.

Capture l'image

Ayant le flux vidéo dans l'application, nous voulons que lorsque l'utilisateur appuie sur le bouton "Capture" va prendre la photo.

  1. getSnapshot ( ) : void { privé getSnapshot function (): void (
  2. BitmapData ( video . width , video . height , true ) ; Snapshot: BitmapData = new (BitmapData video. var largeur, de la vidéo. Hauteur, true);
  3. Matrix ( ) ; var m: matrice = new Matrix ();
  4. video , m ) ; instantané. draw (vidéo, m);
  5. JPGEncoder ( 75 ) ; var jpegEnc: JPGEncoder = new JPGEncoder (75);
  6. ( snapshot ) ; jpegDat var: ByteArray = jpegEnc. encode (snapshot);
  7. = base64Encode ( jpegDat ) ; var img_src: String = base64Encode (jpegDat)
  8. img_src. length > 1600 ) { if (img_src longueur.> 1600) (
  9. / / L'image capturée correctement
  10. { Autres ()
  11. "La imagen capturada parece estar vacía" , "Error" , 4 , null , null , iconoAlerta ) ; Alerte. Show ("L'image capturée semble être vide", "Erreur", 4, null, null, iconoAlerta)
  12. )
  13. )

Avec ce code, mais j'ai d'autres cet effet. Vous obtenez une capture au niveau du bit et l'objet vidéo compressé au format JPEG pour envoyer au serveur. Nous avons le prendre en photo!

Envoyez la photo

Nous allons utiliser un HTTPService pour envoyer la photo par poste, nous avons fait et nous continuerons dans une base de données. Nous ajoutons au code fonction précédente pour envoyer la photo.

  1. getSnapshot ( ) : void { privé getSnapshot function (): void (
  2. BitmapData ( video . width , video . height , true ) ; Snapshot: BitmapData = new (BitmapData video. var largeur, de la vidéo. Hauteur, true);
  3. Matrix ( ) ; var m: matrice = new Matrix ();
  4. video , m ) ; instantané. draw (vidéo, m);
  5. JPGEncoder ( 75 ) ; var jpegEnc: JPGEncoder = new JPGEncoder (75);
  6. ( snapshot ) ; jpegDat var: ByteArray = jpegEnc. encode (snapshot);
  7. = base64Encode ( jpegDat ) ; var img_src: String = base64Encode (jpegDat)
  8. img_src. length > 1600 ) { if (img_src longueur.> 1600) (
  9. = new Object ( ) ; var temp new Object Object = ();
  10. . Img_src = image temp;
  11. temp ) ; HTTPService. Envoyer (temp);
  12. ( this as DisplayObject, ventanaEspera, true ) ) ; cargandoWindow = ventanaEspera (createPopup PopUpManager. (ce que DisplayObject, ventanaEspera, true));
  13. { Autres ()
  14. "La imagen capturada parece estar vacía" , "Error" , 4 , null , null , iconoAlerta ) ; Alerte. Show ("L'image capturée semble être vide", "Erreur", 4, null, null, iconoAlerta)
  15. )
  16. )
  17. useproxy= "false" method= "POST" resultformat= "text" url = "upload.php" result= "onResult()" <Mx: HTTPService id = "HTTPService" showbusycursor = "false" useProxy = "false" method = "POST" resultformat = "text" url = "upload.php" résultat = "onResult ()"
  18. faute = "onHTTPFault (event)" />

Il. Le script upload.php sur votre serveur par POST recevoir la variable "image" avec le contenu de votre photo. Il doit être stocké dans un fichier et vous êtes fait le plus "compliqué? le projet.

  1. $_POST [ 'imagen' ] & strlen ( $_POST [ 'imagen' ] ) != 0 & strlen ( $_POST [ 'imagen' ] ) > 1600 ) { if ($ ['image _POST'] & strlen ($ ['image _POST'])! = 0 & strlen ($ ['image _POST'])> 1600) (
  2. ( $_POST [ 'imagen' ] ) ; $ = Bmd base64_decode ($ ['image _POST']);
  3. ( "fotos/foto.jpg" , 'w' ) ; Im = $ fopen ("photos foto.jpg", 'w');
  4. $im , $bmd ) ; fwrite ($ im, bmd $);
  5. $im ) ; fclose ($ im);
  6. )

Avant de ranger l'image disque peut ajouter un enregistrement à une base de données vous permet de générer, après la galerie. Cette partie est votre choix.

Génération Galerie

C'est la partie la plus facile, il suffit de créer un script PHP (ou dans la langue que vous préférez) qui répertorie les photos que vous avez été sauvé de la base de données paging comme bon vous semble. Plus de commentaires, je reste pour quelque chose si facile.

Conclusions

Aujourd'hui, nous avons assisté à une rapide et facile de façon extrêmement de se connecter à la webcam (et microphone) des utilisateurs. Nous avons seulement considéré comme faisant un aperçu de ce qui est vu à travers la caméra, mais le système ouvre un vaste monde de possibilités.

Télécharger ici le projet de code.

Si vous avez révélées utiles cet article ... Partager?