如何从客户端网络摄像头获取图像

本文关键字:摄像头 获取 图像 网络 客户端 | 更新日期: 2023-09-27 17:49:36

我希望创建一个ASP。Net网站,用户可以从那里的网络摄像机捕获图像,并将其保存到我的服务器上的数据库。我试过使用TWAIN,但似乎找不到任何支持此功能的新相机。当尝试使用Silverlight和WIA时也是如此。有人在这方面取得过成功吗?

客户端电脑将有任何我推荐的网络摄像头,所以如果你知道一个模型的工作,请分享。我试过Microsoft LifeCam和Logitech,都没有运气。

如果你已经这样做了或现在如何,我真的很感激一些帮助。感谢您的宝贵时间。

如何从客户端网络摄像头获取图像

如果你的目标是较新的浏览器(那些支持WebRTC getUserMedia方法),那么Photobooth.js可能是你的一个选择。

引用自WebMonkey:"最近吸引我们眼球的webbrtc热点是开发者Wolfram Hempel的Photobooth.js,这是一个用于设备相机的JavaScript库。"

http://www.webmonkey.com/2012/12/add-an-html5-webcam-to-your-site-with-photobooth-js/

和lib本身:

http://wolframhempel.com/2012/12/02/photobooth-js/

希望它对你有用!

asp.net是服务器端技术,无法连接到客户端网络摄像头。你的浏览器是高度沙盒化的,不太可能允许访问用户的网络摄像头。

考虑构建一个Flash或Silverlight组件来访问网络摄像头。

唯一的例外是,在许多移动平台上,浏览器可以通过<input type="file" />标签访问相机和图片存储。这种情况在Android上已经存在一段时间了,现在是Safari v6的一个选项。我不知道有哪款桌面浏览器允许直接访问附加的网络摄像头。

一个奖励的解决方案是让用户拍摄照片,然后通过文件上传访问它们。

我能够通过让用户在计算机上安装Google Chrome Frame,然后使用canvas标签来获得图像,从而完成我想要的。下面是一些示例代码:

    <div>
        <p id="status" style="color:red">
            <noscript>JavaScript is disabled.</noscript>
        </p>

        <table>
            <tr>
                <td>
                    <input id="btnTakePicture" type="button" value="Take Picture"; />
                </td>
                <td>
                    <input id="btnSave" type="button" value="Save Picture"; />
                </td>
            </tr>
        </table>

        <asp:Button ID="btnSavePicture" runat="server" Text="HiddenSave" OnClick="btnSavePicture_Click" CssClass="hiddencol"  />
        <asp:Panel ID="pnlHide" runat="server" style="display:none" >    
            <textarea id="eventdata" rows="18" cols="1" style="width: 100%" runat="server"></textarea>
        </asp:Panel>
        <script type="text/javascript">
                navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
                navigator.mozGetUserMedia || navigator.msGetUserMedia;
                var webcam = (function () {

                    var video = document.createElement('video'),
                    photo = document.createElement('canvas');
                    function play() {
                        if (navigator.getUserMedia) {
                            navigator.getUserMedia({ video: true, audio: true, toString: function () { return "video,audio"; } }, onSuccess, onError);
                        } else {
                            changeStatus('getUserMedia is not supported in this browser.', true);
                        }
                    }
                    function onSuccess(stream) {
                        var source;
                        if (window.webkitURL) {
                            source = window.webkitURL.createObjectURL(stream);
                        } else {
                            source = stream; // Opera and Firefox
                        }

                        video.autoplay = true;
                        video.src = source;
                        changeStatus('Connected.', false);
                    }
                    function onError() {
                        changeStatus('Please accept the getUserMedia permissions! Refresh to try again.', true);
                    }
                    function changeStatus(msg, error) {
                        var status = document.getElementById('status');
                        status.innerHTML = msg;
                        status.style.color = (error) ? 'red' : 'green';
                    }

                    // allow the user to take a screenshot
                    function setupPhotoBooth() {
                        //var takeButton = document.createElement('button');
                        var takeButton = document.getElementById('btnTakePicture');
                        //takeButton.innerText = 'Take Picture';
                        takeButton.addEventListener('click', takePhoto, true);
                        //document.body.appendChild(takeButton);
                        //var saveButton = document.createElement('button');
                        var saveButton = document.getElementById('btnSave');
                        //saveButton.id = 'btnSave';
                        //saveButton.innerText = 'Save Picture';
                        saveButton.disabled = true;
                        saveButton.addEventListener('click', savePhoto, true);
                        //document.body.appendChild(saveButton);
                    }
                    function takePhoto() {
                        // set our canvas to the same size as our video
                        photo.width = video.width;
                        photo.height = video.height;
                        var context = photo.getContext('2d');
                        context.drawImage(video, 0, 0, photo.width, photo.height);
                        // allow us to save
                        var saveButton = document.getElementById('btnSave');
                        saveButton.disabled = false;
                        var data = photo.toDataURL("image/png");
                        data = data.replace("image/png", "");
                        document.getElementById("<%= eventdata.ClientID %>").value = data;
                    }
                    function savePhoto() {
                        //                        var data = photo.toDataURL("image/png");
                        //                        data = data.replace("image/png", "image/octet-stream");
                        //                        document.getElementById("<%= eventdata.ClientID %>").value = data;
                        //                        document.location.href = data;
                        SendBack();
                    }
                    return {
                        init: function () {
                            changeStatus('Please accept the permissions dialog.', true);
                            video.width = 320;
                            video.height = 240;
                            document.body.appendChild(video);
                            document.body.appendChild(photo);
                            navigator.getUserMedia || (navigator.getUserMedia = navigator.mozGetUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia);
                            play();
                            setupPhotoBooth();
                        } ()
                    }

                })();
            function SendBack() {
                var btn = document.getElementById("<%= btnSavePicture.ClientID %>");
                btn.click();
            }
    </script>
    </div>