手机端调用摄像头拍照

   1.最简单方法是input取图像:这里需要引导用户进图库后直接拍照 mark-zhq[4]

<input type="file" id="browseFile" onchange="" accept="images/*">
<input type="button" id="saveimg" value="保存图片" />

    2.调用navigator.getUserMedia方法:手机端--苹果、安卓浏览器、微信浏览器都不支持,本人测的UC浏览器支持。navigator.getUserMedia浏览器支持情况见:http://caniuse.mojijs.com/Home/Html/item/key/stream/index.html

 

  1. <!doctype html>
    <html>
    <head>
    <meta charset="utf-8" />
    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    </head>
    <body>
    <video id="video" width="640" height="480" autoplay></video>
    <button id="snap">Snap Photo</button>
    <canvas id="canvas" width="640" height="480"></canvas>
    <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); 
            };
    
        // 多浏览器兼容调用摄像头
        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);
        }
        else if(navigator.mozGetUserMedia) { // Firefox-prefixed
            navigator.mozGetUserMedia(videoObj, function(stream){
                video.src = window.URL.createObjectURL(stream);
                video.play();
            }, errBack);
        }
    }, false);
      //截取图像
    document.getElementById("snap").addEventListener("click", function() {
        context.drawImage(video, 0, 0, 640, 480);
    });
    </script>
    </body>
    </html>

    3.微信开发的可以调用微信JS SDK接口

  2. wx.chooseImage({
        count: 1, // 默认9
        sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
        success: function (res) {
            var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
        }
    });

     4.还有一种是通过jQuery.webcam去做,需要用户安装flash插件,请自行百度---

转载于:https://www.cnblogs.com/web-easy/p/5288275.html

在HTML5中,调用手机摄像头拍摄照片通常涉及到JavaScript和一些设备访问API,比如Web API (Media Streams)。以下是简单的步骤: 1. **获取用户授权**:首先,你需要在`<script>`标签内通过`getUserMedia()`方法请求用户的媒体权限,尤其是对相机的访问。 ```html <script> function getUserMediaSuccess(stream) { // 接下来处理流 } function getUserMediaError(err) { console.error('Failed to access camera: ', err); } navigator.mediaDevices.getUserMedia({ video: true }) .then(getUserMediaSuccess) .catch(getUserMediaError); </script> ``` 2. **创建视频元素**:创建一个HTML5 `<video>`元素,并设置其srcObject属性为从`getUserMedia()`获取的stream,这样视频就会显示实时摄像头画面。 ```html <video id="camera" width="300" height="200"></video> ``` 3. **触发拍照**:当用户想要拍照时,你可以创建一个Canvas画布,然后从video元素上截取帧,保存为图片。例如: ```javascript document.getElementById('takePicture').addEventListener('click', function() { var canvas = document.createElement('canvas'); canvas.width = video.videoWidth; canvas.height = video.videoHeight; var ctx = canvas.getContext('2d'); ctx.drawImage(video, 0, 0, canvas.width, canvas.height); // 然后将canvas转换为Blob并下载 }); ``` 4. **下载图片**:将生成的canvas转换为Blob,然后提供给用户下载。 ```javascript var imgBlob = canvas.toDataURL('image/jpeg'); // 或者 image/png var link = document.createElement('a'); link.href = imgBlob; link.download = 'photo.jpg'; // 可自定义文件名 link.click(); ``` 请注意,以上示例需要在现代浏览器支持WebRTC和getUserMedia的情况下运行,并且可能受到浏览器安全策略的影响。在实际应用中,可能还需要处理更多边缘情况和兼容问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值