HTML代码结构
想用HTML5做个照相软件?先学点儿网页布局的代码!拍照前可得先问下别人是否愿意开启摄像头。然后就能从DOM里读取到相关信息。比如选个640×480的高清分辨率,还能使用JavaScript随时调整,想怎么拍就怎么拍!
HTML里面加点有趣的功能,比如看录像或者拍照啥的,这样用起来就更顺手。再说了,别忘了在HTML中加上JavaScript,这样写出来的代码简单明了,以后修改也容易得多!
JavaScript部分
搞定HTML后,咱们就来试试学点JavaScript!虽然有点挑战,但只要按部就班地学习,其实也不难。
用JavaScript的话,先得搞明白咋和摄像机玩儿,然后学会拍照和抓图那些事儿。其实,直接用浏览器的API或者找个第三方软件就好,就能把摄像机拍下来的东西展示出来了。处理图片的时候,还能加点特效什么的,甚至还能传到服务器上存着!
网页部署与兼容性
HTML和Javascript搞好了之后,要让网页开始运行,这时候要用到叫做http的东西来上传网页。这样我们的网页就可以下载并运行各种文件,包括脚本,同时也能保证数据的安全性!
浏览器能用吗?HTML5新出了点花样,不过每家用的版本不一样。别忘了查看你家浏览器是不是最新的,还得支持HTML5才能快快乐乐地玩儿拍照~
浏览器要求与测试环境
别急要想拍照开心,就要了解浏览器和测试环境的要求!试试最新的像Chrome这种现代浏览器调试下~
学编程就得多琢磨,多练手,要能应对各种问题哦!别怕失败,大胆试。学到新知识要记下,时间长了你的技能自然会提高!
完整代码示例
最后贴上一个完整的代码示例作为参考:
html <title>TakePhotowithHTML5</title> #video{ width:640px; height:480px; }// 设置事件监听,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);SnapPhoto</button>
我们来找找那个叫‘视频’的元素,它就在文档里。"canvas",就是那个网页上的画布,直接在<canvas>标签里找。
咱们来找找'snap'这个元素,它在文档的最下方。
constconstraints={
video:true
};
你要去用getUserMedia吗?就是这个,简单地说:navigator.mediaDevices.getUserMedia(设定好的条件)。
.then(function(stream){
video.srcObject=stream;
})
.catch(function(err){
console.log(err);
});
点击这个"打开"按钮,就会发生下面的事情。
直接把"画布"放进"2D图形环境",它叫context。
在画布左上角的地方,拍一下视频画面,弄成640x480就行!浏览器webcamera // 设置事件监听,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);
原文链接:https://www.icz.com/technicalinformation/web/2024/04/15536.html,转载请注明出处~~~
评论0