使用HTML5拍照示例代碼
來源:易賢網(wǎng) 閱讀:1188 次 日期:2016-07-13 13:39:52
溫馨提示:易賢網(wǎng)小編為您整理了“使用HTML5拍照示例代碼”,方便廣大網(wǎng)友查閱!

首先,我們看看HTML代碼結(jié)構(gòu),當(dāng)然,這部分的DOM內(nèi)容應(yīng)該是在用戶允許使用其攝像頭事件出發(fā)后,動(dòng)態(tài)加載生成的。

注意: 我們采用的是 640X480的分辨率,如果采用JS動(dòng)態(tài)生成,那么您是可以靈活控制分辨率的。

代碼如下:

<!--

聲明: 此div應(yīng)該在允許使用webcam,網(wǎng)絡(luò)攝像頭之后動(dòng)態(tài)生成

寬高: 640 *480,當(dāng)然,可以動(dòng)態(tài)控制啦!

-->

<!--

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元素創(chuàng)建完成,那么JavaScript部分將簡(jiǎn)單的超乎你想象的簡(jiǎn)單:

代碼如下:

// 設(shè)置事件監(jiān)聽,DOM內(nèi)容加載完成,和jQuery的$.ready() 效果差不多。

window.addEventListener("DOMContentLoaded", function() {

// canvas 元素將用于抓拍

var canvas = document.getElementById("canvas"),

context = canvas.getContext("2d"),

// video 元素,將用于接收并播放攝像頭 的數(shù)據(jù)流

video = document.getElementById("video"),

videoObj = { "video": true },

// 一個(gè)出錯(cuò)的回調(diào)函數(shù),在控制臺(tái)打印出錯(cuò)信息

errBack = function(error) {

if("object" === typeof window.console){

console.log("Video capture error: ", error.code);

}

};

// Put video listeners into place

// 針對(duì)標(biāo)準(zhǔn)的瀏覽器

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);

}

// 對(duì)拍照按鈕的事件監(jiān)聽

document.getElementById("snap").addEventListener("click", function() {

// 畫到畫布上

context.drawImage(video, 0, 0, 640, 480);

});

}, false);

最后,記得講您的網(wǎng)頁(yè)放到web服務(wù)器下面,然后通過http協(xié)議來訪問哦。

另外,需要瀏覽器版本較新,并且支持HTML5的相關(guān)新特性才可以。

譯者不算稱職啦,沒有按原文來翻譯。使用的瀏覽器是chrome 28。

最后,貼上完整的代碼,比較呆板。

代碼如下:

<!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>

// 設(shè)置事件監(jiān)聽,DOM內(nèi)容加載完成,和jQuery的$.ready() 效果差不多。

window.addEventListener("DOMContentLoaded", function() {

// canvas 元素將用于抓拍

var canvas = document.getElementById("canvas"),

context = canvas.getContext("2d"),

// video 元素,將用于接收并播放攝像頭 的數(shù)據(jù)流

video = document.getElementById("video"),

videoObj = { "video": true },

// 一個(gè)出錯(cuò)的回調(diào)函數(shù),在控制臺(tái)打印出錯(cuò)信息

errBack = function(error) {

if("object" === typeof window.console){

console.log("Video capture error: ", error.code);

}

};

// Put video listeners into place

// 針對(duì)標(biāo)準(zhǔn)的瀏覽器

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);

}

// 對(duì)拍照按鈕的事件監(jiān)聽

document.getElementById("snap").addEventListener("click", function() {

// 畫到畫布上

context.drawImage(video, 0, 0, 640, 480);

});

}, false);

</script>

</head>

<body>

<div>

<!--

聲明: 此div應(yīng)該在允許使用webcam,網(wǎng)絡(luò)攝像頭之后動(dòng)態(tài)生成

寬高: 640 *480,當(dāng)然,可以動(dòng)態(tài)控制啦!

-->

<!--

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>

更多信息請(qǐng)查看網(wǎng)頁(yè)制作
易賢網(wǎng)手機(jī)網(wǎng)站地址:使用HTML5拍照示例代碼
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
相關(guān)閱讀網(wǎng)頁(yè)制作

2025國(guó)考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)