DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5詳解 >> 使用HTML5拍照示例代碼
使用HTML5拍照示例代碼
編輯:HTML5詳解     
演示地址: Html5拍照演示
首先,我們看看Html代碼結構,當然,這部分的DOM內容應該是在用戶允許使用其攝像頭事件出發後,動態加載生成的。 
注意: 我們采用的是 640X480的分辨率,如果采用JS動態生成,那麼您是可以靈活控制分辨率的。 

復制代碼代碼如下:
<!-- 
聲明: 此div應該在允許使用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> 

JavaScript 
只要上面的Html元素創建完成,那麼JavaScript部分將簡單的超乎你想象的簡單: 

復制代碼代碼如下:
// 設置事件監聽,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); 

最後,記得講您的網頁放到web服務器下面,然後通過http協議來訪問哦。 
另外,需要浏覽器版本較新,並且支持Html5的相關新特性才可以。 
譯者不算稱職啦,沒有按原文來翻譯。使用的浏覽器是Chrome 28。 
最後,貼上完整的代碼,比較呆板。 

復制代碼代碼如下:
<!DOCTYPE Html> 
<Html> 
<head> 
<title> 浏覽器webcamera </title> 
<meta name="Generator" content="EditPlus"> 
<meta name="Author" content="[email protected]"> 
<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> 
<div> 
<!-- 
聲明: 此div應該在允許使用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> 
</div> 
</body> 
</Html> 
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved