Maison >interface Web >Tutoriel H5 >Explication détaillée d'exemples de mise en œuvre de la fonction caméra via H5
Photographie HTML5 Tout d'abord, jetons un coup d'œil à la structure du code HTML. Bien sûr, cette partie du contenu DOM doit être chargée et générée dynamiquement une fois que l'utilisateur a autorisé l'utilisation de son appareil photo. Les amis intéressés peuvent en savoir plus.
Adresse de démonstration : démo de prise de photos HTML5
Tout d'abord, jetons un coup d'œil à la structure du code HTML. Bien sûr, cette partie du contenu DOM doit être chargée et générée dynamiquement une fois que l'utilisateur a autorisé l'utilisation de son événement de caméra.
Remarque : nous utilisons la résolution de 640X480. Si vous utilisez JS pour la générer dynamiquement, vous pouvez contrôler la résolution de manière flexible.
Le code est le suivant :
<!-- 声明: 此p应该在允许使用webcam,网络摄像头之后动态生成 宽高: 640 *480,当然,可以动态控制啦! --> <!-- Ide all y these elements aren't created until it's confirmed that the client supports video/camera, but for the sake of illustrating the elements involved, they are created with markup (not JavaScript ) --> <video id="video" width ="640" height ="480" autoplay ></video> <button id="snap">Snap Photo</button> < canvas id="canvas" width="640" height="480"></canvas>
JavaScript
Tant que l'élément HTML ci-dessus est créé, la partie JavaScript sera plus simple que vous ne l'imaginez Simple :
Le code est le suivant :
// 设置事件监听,DOM内容加载完成,和 jQuery 的$.ready() 效果差不多。 window.addEvent List ener("DOMContentLoaded", function() { // canvas 元素将用于抓拍 var canvas = document .getElementById("canvas"), context = canvas.getContext("2d"), // video 元素,将用于接收并播放摄像头 的数据流 video = document.getElementById("video"), videoObj = { "video": true }, // 一个出错的 回调函数 ,在控制台打印出错信息 errBack = function(error) { if (" object " === typeof window.console){ console.log("Video capture error: ", error.code); } }; // Put video listeners into place // 针对标准的浏览器 if(navigator.getUserMedia) { // Standard navigator.getUserMedia(videoObj, function(stream) { video.src = stream; video.play(); }, errBack); } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed navigator.webkitGetUserMedia(videoObj, function(stream){ video.src = window.webkitURL.createObjectURL(stream); video.play(); }, errBack); } // 对拍照 按钮 的事件监听 document.getElementById("snap").addEventListener("click", function() { // 画到画布上 context.drawImage(video, 0, 0, 640, 480); }); }, false);
Enfin, pensez à mettre votre page web sous le serveur web, puis à y accéder via le protocole http.
De plus, la version du navigateur doit être plus récente et prendre en charge les nouvelles fonctionnalités de HTML5.
Le traducteur n'est pas qualifié car il n'a pas traduit selon le texte original. Le navigateur utilisé est Chrome 28.
Enfin, collez le code complet, ce qui est plutôt ennuyeux.
Le code est le suivant :
<!DOCTYPE html> <html> <head> <title> 浏览器webcamera </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content="renfufei@qq.com"> <meta name="Description" content="inveted by: http://davidwalsh.name/browser-camera"> <script> // 设置事件监听,DOM内容加载完成,和jQuery的$.ready() 效果差不多。 window.addEventListener("DOMContentLoaded", function() { // canvas 元素将用于抓拍 var canvas = document.getElementById("canvas"), context = canvas.getContext("2d"), // video 元素,将用于接收并播放摄像头 的数据流 video = document.getElementById("video"), videoObj = { "video": true }, // 一个出错的回调函数,在控制台打印出错信息 errBack = function(error) { if("object" === typeof window.console){ console.log("Video capture error: ", error.code); } }; // Put video listeners into place // 针对标准的浏览器 if(navigator.getUserMedia) { // Standard navigator.getUserMedia(videoObj, function(stream) { video.src = stream; video.play(); }, errBack); } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed navigator.webkitGetUserMedia(videoObj, function(stream){ video.src = window.webkitURL.createObjectURL(stream); video.play(); }, errBack); } // 对拍照按钮的事件监听 document.getElementById("snap").addEventListener("click", function() { // 画到画布上 context.drawImage(video, 0, 0, 640, 480); }); }, false); </script> </head> <body> <p> <!-- 声明: 此p应该在允许使用webcam,网络摄像头之后动态生成 宽高: 640 *480,当然,可以动态控制啦! --> <!-- Ideally these elements aren't created until it's confirmed that the client supports video/camera, but for the sake of illustrating the elements involved, they are created with markup (not JavaScript) --> <video id="video" width="640" height="480" autoplay></video> <button id="snap">Snap Photo</button> <canvas id="canvas" width="640" height="480"></canvas> </p> </body> </html>
[Recommandations associées]
1 Tutoriel vidéo gratuit HTML5
2. . Explication détaillée de la méthode d'implémentation de la lecture plein écran sur WeChat en HTML5
3 Explication détaillée des problèmes de compatibilité du navigateur avec les nouvelles balises H5
<.>4.Aperçu général Comment créer une page Web avec H5
5La différence entre H5 et le HTML traditionnel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!