html5拍照上传下载demo

<!DOCTYPE html>  
    <html>  
    <head>  
        <title>拍照上传</title>  
        <meta charset="utf-8">  
        <meta name="viewport" content="width=device-width, initial-scale=1">  
        <script src="/assets/js/jquery.min.js"></script>
    </head>  
    <body> 
        <video id="video" width="100%" height="270px" autoplay></video>
        <button id="snap" style="margin-left: 42%;">拍照上传</button>
        <!-- <button onClick="saveFile(filename);" type="button">下载图片</button> -->
        <canvas id="canvas" height="270px" style="display:none;"></canvas>
        <script type="text/javascript">
            var aVideo=document.getElementById('video');
            var aCanvas=document.getElementById('canvas');
            var ctx=aCanvas.getContext('2d');
            var width = '';
            
            navigator.getUserMedia  = navigator.getUserMedia ||
                              navigator.webkitGetUserMedia ||
                              navigator.mozGetUserMedia ||
                              navigator.msGetUserMedia;//获取媒体对象(这里指摄像头)
            navigator.getUserMedia({video:true}, gotStream, noStream);//参数1获取用户打开权限;参数二成功打开后调用,并传一个视频流对象,参数三打开失败后调用,传错误信息
            
            function gotStream(stream) {
                video.src = URL.createObjectURL(stream);
                video.onerror = function () {
                  stream.stop();
                };
                stream.onended = noStream;
                video.onloadedmetadata = function () {
                  alert('摄像头成功打开!');
                  width = $("#video").width();
                  $("#canvas").width(width);
                };
            }
            function noStream(err) {
                alert(err);
            }
            function getTime() {
                var nowDate = new Date();var year = nowDate.getFullYear();
                var month = nowDate.getMonth() + 1 < 10 ? "0" + (nowDate.getMonth() + 1): nowDate.getMonth() + 1;
                var day = nowDate.getDate() < 10 ? "0" + nowDate.getDate() : nowDate.getDate();
                var hours = nowDate.getHours()<10?"0" + nowDate.getHours():nowDate.getHours();
                var minutes = nowDate.getMinutes()<10?"0" + nowDate.getMinutes():nowDate.getMinutes();
                var seconds = nowDate.getSeconds()<10?"0" + nowDate.getSeconds():nowDate.getSeconds();
                var dateStr = year + month + day + hours + minutes + seconds;
                return dateStr;
            }

            document.getElementById("snap").addEventListener("click", function() {
                ctx.drawImage(aVideo, 0, 0, width, 270);//将获取视频绘制在画布上
                //获取canvas标签里的图片内容
                var imgData = document.getElementById('canvas').toDataURL(type);
                $.ajax({
                    type: "POST",
                    contentType:"application/json",
                    dataType: "json",
                    url: "https://localhost/api/app/savePhoto", //https才可以通过,不然会报错提示安全问题!
                    data: JSON.stringify({baseImg:"data:"+imgData, cm000034name:getTime()}),
                    success: function(data) {
                        console.log(data);
                        if (data.state == 'ok') {
                            alert("上传成功");
                            self.location = "http://localhost:8080/wxTools/index.html";
                        }
                    },
                    error: function(data) {
                        console.log(data);
                    }
                });
            });
            
            //下载代码
            var saveFile = function(filename){
                //获取canvas标签里的图片内容
                var imgData = document.getElementById('canvas').toDataURL(type);
                imgData = imgData.replace(_fixType(type),'image/octet-stream');
                
                var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
                save_link.href = imgData;
                save_link.download = filename;
               
                var event = document.createEvent('MouseEvents');
                event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                save_link.dispatchEvent(event);
            };
            
            //下面的代码是保存canvas标签里的图片并且将其按一定的规则重命名
            var type = 'png';
            var _fixType = function(type) {
                type = type.toLowerCase().replace(/jpg/i, 'jpeg');
                var r = type.match(/png|jpeg|bmp|gif/)[0];
                return 'image/' + r;
            };
            
            // 下载后的文件名规则
            var filename = (new Date()).getTime() + '.' + type;
        </script>
    </body>  
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值