zoukankan      html  css  js  c++  java
  • web HTML5 调用摄像头的代码

    最近公司要求做一个在线拍照的功能,具体代码如下:

    <html>
        <head>
            <title>html5调用摄像头拍照</title>
            <style type="text/css">
            #camera {
                width: 640px;
                height: 525px;
                position: fixed;
                border: 1px solid #f0f0f0;
                -moz-border-radius: 4px 4px 0 0;
                -webkit-border-radius: 4px 4px 0 0;
                border-radius: 4px 4px 0 0;
                -moz-box-shadow: 0 0 4px rgba(0,0,0,0.6);
                -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.6);
                box-shadow: 0 0 4px rgba(0,0,0,0.6);
            }
    
            #buttons {
                text-align: center;
            }
    
            .btn {
                width: 99px;
                height: 38px;
                line-height: 32px;
                margin: 0px 4px 0px 0px;
                border: 1px solid #fff;
                -moz-border-radius: 5px; /* Gecko browsers */
                -webkit-border-radius: 5px; /* Webkit browsers */
                border-radius: 5px; /* W3C syntax */
                cursor: default;
                text-align: center;
                font-size: 14px;
                color: #fff;
            }
            .btn_blue {
                background-color: #5CACEE;
            }
            .btn_green {
                background-color: #00EE00;
            }
            .hidden{ display:none }
        </style>
        </head>
        <body>
            <div id="camera">
                <div id="contentHolder">
                    <video id="video" width="640" height="480" autoplay></video>
                    <canvas style="display:none;" id="canvas" width="640" height="480"></canvas>
                </div>
                <div id="buttons">
                    <button id="btn_snap" class="btn btn_blue">拍照</button>
                    <button id="btn_cancel" class="btn btn_blue" style="display:none;">取消</button>
                    <button id="btn_upload" class="btn btn_green" style="display:none;">上传</button>
                </div>
            </div>
        </body>
    </html>
    <script type="text/javascript">
            // 添加事件监听器
            window.addEventListener("DOMContentLoaded", function () {
                // 获取元素,创建设置等等
                var canvas = document.getElementById("canvas"),
                        context = canvas.getContext("2d"),
                        video = document.getElementById("video"),
                        videoObj = { "video": true },
                        errBack = function (error) {
                            console.log("Video capture error: ", error.code);
                        };
    
                // 添加video 监听器
                if (navigator.getUserMedia) { // 标准
                    navigator.getUserMedia(videoObj, function (stream) {
                        video.src = stream;
                        video.play();
                    }, errBack);
                } else if (navigator.webkitGetUserMedia) { // WebKit 前缀
                    navigator.webkitGetUserMedia(videoObj, function (stream) {
                        video.src = window.webkitURL.createObjectURL(stream);
                        video.play();
                    }, errBack);
                }
                else if (navigator.mozGetUserMedia) { // Firefox 前缀
                    navigator.mozGetUserMedia(videoObj, function (stream) {
                        video.src = window.URL.createObjectURL(stream);
                        video.play();
                    }, errBack);
                }
                else {
                    alert("浏览器不支持HTML5!");
                    //console.log('your browser not support getUserMedia');
                }
    
                document.getElementById("btn_snap").addEventListener("click", function () {
                    context.drawImage(video, 0, 0, 640, 480);
                });
            }, false);
    </script>

    但是有一些缺点就是,无法调整摄像头的分辨率,导致拍摄的照片不清晰。

  • 相关阅读:
    Oracle EBS 初始化用户密码
    Oracle EBS FND User Info API
    linux ERROR: ld.so: object '/lib/libcwait.so' from /etc/ld.so.preload cannot be preloaded: ignored.
    linux解压cpio.gz类型文件
    linux删除乱码文件
    linux使用man命令后退出
    linux字符图形界面
    Red Hat linux 如何增加swap空间
    Linux删除文件夹命令
    Linux本地无法登录,远程却可以登录
  • 原文地址:https://www.cnblogs.com/wsk198726/p/5550535.html
Copyright © 2011-2022 走看看