利用html5调用本地摄像头拍照上传图片

简介: 原文:利用html5调用本地摄像头拍照上传图片 xmlns="http://www.w3.org/1999/xhtml">    html5概念啥的就不废话了,不知道的 百度, 谷歌一堆。
原文: 利用html5调用本地摄像头拍照上传图片

xmlns="http://www.w3.org/1999/xhtml">

   html5概念啥的就不废话了,不知道的 百度, 谷歌一堆。。今天学了学html5中的Canvas结合新增的<video>标签来获取本地摄像头,在html5之前,要在浏览器获取本地摄像头只有通过插件(ActiveX,但是这种只有IE支持)或者是flash来获取(或许你没学过flash那就很坑爹了),在之后微软的silvertlight中也可以获取,但这些都比较麻烦,在html5的世界里,要获取本地摄像头,只要配合js就可以轻松获取。。

目前支持html5的浏览器(参考http://www.cnblogs.com/jerry_cong/archive/2011/05/15/2047143.html

先看看效果。。。(个人测试:使用谷歌Chrome 23.0.1271.97)

75ad9c564dee01951570a&690

 

 

看看主要代码吧:

这个是前台HTML的代码。

<div id="contentHolder">   
    <video id="video" width="320" height="320" autoplay></video>   
    <button id="snap" style="display:none"> 拍照</button>   
    <canvas style="display:none" id="canvas" width="320" height="320"></canvas>   
</div>

下面这个是主要代码了。(jquery)

<script>   
   //判断浏览器是否支持HTML5 Canvas   
       window.onload = function () {   
           try {   
               //动态创建一个canvas元 ,并获取他2Dcontext。如果出现异常则表示不支持   
               document.createElement("canvas").getContext("2d");   
               document.getElementByIdx("support").innerHTML = "浏览器支持HTML5 CANVAS";   
           }   
           catch (e) {   
               document.getElementByIdx("support").innerHTML = "浏览器不支持HTML5 CANVAS";   
           }   
         
       };   
         
       //这段代 主要是获取摄像头的视频流并显示在Video 签中   
       window.addEventListener("DOMContentLoaded", function () {   
           var canvas = document.getElementByIdx("canvas"),   
               context = canvas.getContext("2d"),   
               video = document.getElementByIdx("video"),   
               videoObj = { "video": true },   
               errBack = function (error) {   
                   console.log("Video capture error: ", error.code);   
               };   
               //navigator.getUserMedia这个写法在Opera中好像是navigator.getUserMedianow   
           if (navigator.getUserMedia) {   
               navigator.getUserMedia(videoObj, function (stream) {   
                   video.src = stream;   
                   video.play();   
               }, errBack);   
           } else if (navigator.webkitGetUserMedia) {   
               navigator.webkitGetUserMedia(videoObj, function (stream) {   
                   video.src = window.webkitURL.createObjectURL(stream);   
                   video.play();   
               }, errBack);   
           }   
           //这个是拍照按钮的事件,   
           $("#snap").click(function () {   
               context.drawImage(video, 0, 0, 320, 320);   
               //CatchCode();   
           });   
         
       }, false);   
         
       //定时器   
       var interval = setInterval(CatchCode, "300");   
         
         
       //这个是 刷新上 图像的   
       function CatchCode() {   
           $("#snap").click();//实际运用可不写,测试代 , 为单击拍照按钮就获取了当前图像,有其他用途   
           var canvans = document.getElementByIdx("canvas"); //获取浏览器页面的画布对象              
           //以下开始编 数据   
                     
           var imgData = canvans.toDataURL(); //将图像转换为base64数据   
           var base64Data = imgData.substr(22); //在前端截取22位之后的字符串作为图像数据   
                   
           //开始异步上    
           $.post("uploadImgCode.ashx", { "img": base64Data }, function (data, status) {   
               if (status == "success") {   
                   if (data == "OK") {   
                       
目录
相关文章
|
11天前
|
关系型数据库 MySQL
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
|
10月前
|
前端开发 JavaScript API
wangEditor富文本编辑器的调用开发实录(v5版本、获取HTML内容、上传图片、隐藏上传视频)
wangEditor富文本编辑器的调用开发实录(v5版本、获取HTML内容、上传图片、隐藏上传视频)
511 0
|
8月前
|
移动开发 HTML5
HTML5 图片上传预览(调用摄像头、文件)demo效果示例(整理)
HTML5 图片上传预览(调用摄像头、文件)demo效果示例(整理)
|
Web App开发
HTML - Video 在使用非 localhost/127.0.0.1 地址访问时打开摄像头失败
HTML - Video 在使用非 localhost/127.0.0.1 地址访问时打开摄像头失败
263 0
|
移动开发 JSON JavaScript