HTML5调用手机摄像头拍照的实现思路及代码


Posted in HTML / CSS onJune 15, 2014

小编将思路提供给了大家,学编程最重要的是实践,我这虽然有完善的代码,但是希望大家都可以自己写出属于自己的代码
HTML5 The Media Capture API提供了对摄像头的可编程访问,用户可以直接用getUserMedia获得摄像头提供的视频流。但实际上用html5调用手机摄像头存在很多问题:
1)谷歌的发布的Chrome到了21版本后,才新增了一个用于高质量视频音频通讯的getUserMedia API,该API允许Web应用程序访问摄像头和麦克风,其他手机浏览器只有opera支持html5调用本地拍照功能
2)两个浏览器均不支持访问多个摄像头:chrome不支持访问后置摄像头,pera支持访问后置摄像头的

android手机,浏览器chrome32版本下实现了浏览器调用设备摄像头进行拍照。主要分3个步骤来完成:

1)获取视频流
添加一个HTML5的Video标签,并将从摄像头获得视频作为这个标签的输入来源

复制代码
代码如下:

var video = document.getElementByIdx_x_x("video");
navigator.getUserMedia({video:true}, function (stream) {
video.src = window.webkitURL.createObjectURL(stream);
}, function (error) { alert(error); });

2)拍照
关于拍照功能,采用HTML5的Canvas实时捕获Video标签的内容,Video元素能作为Canvas图像的输入
复制代码
代码如下:

function scamera() {
var videoElement = document.getElementByIdx_x_x('video');
var canvasObj = document.getElementByIdx_x_x('canvas1');
var context1 = canvasObj.getContext('2d');
context1.fillStyle = "#ffffff";
context1.fillRect(0, 0, 320, 240);
context1.drawImage(videoElement, 0, 0, 320, 240);
}

3)图片获取
要从Canvas获取图片数据,其核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像
复制代码
代码如下:

var imgData=canvas.toDataURL(“image/png”);

imgData格式如下:”data:image/png;base64,xxxxx“
真正图像数据是base64编码逗号之后的部分
HTML / CSS 相关文章推荐
CSS3解决移动页面上点击链接触发色块的问题
Jun 03 HTML / CSS
详解CSS的border边框属性及其在CSS3中的新特性
May 10 HTML / CSS
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
Nov 11 HTML / CSS
html5+css3之CSS中的布局与Header的实现
Nov 21 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
May 13 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
Jul 04 HTML / CSS
纯CSS3制作页面切换效果的实例代码
May 30 HTML / CSS
HTML5 微格式和相关的属性名称
Feb 10 HTML / CSS
html5 学习简单的拾色器
Sep 03 HTML / CSS
解析HTML5中的新功能本地存储localStorage
Mar 01 HTML / CSS
用html5绘制折线图的实例代码
Mar 25 HTML / CSS
Canvas实现保存图片到本地的示例代码
Jun 28 HTML / CSS
html5在移动端的屏幕适应问题示例探讨
Jun 15 #HTML / CSS
HTML5 创建canvas元素示例代码
Jun 04 #HTML / CSS
解决Firefox下不支持outerHTML问题代码分享
Jun 04 #HTML / CSS
html5小技巧之通过document.head获取head元素
Jun 04 #HTML / CSS
HTML5图片预览实例分享
Jun 04 #HTML / CSS
阻止移动设备(手机、pad)浏览器双击放大网页的方法
Jun 03 #HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
May 31 #HTML / CSS
You might like
PHP中的float类型使用说明
2010/07/27 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
javascript中Function类型详解
2015/04/28 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
大学生思想汇报范文
2013/12/31 职场文书
运输服务质量承诺书
2014/03/27 职场文书
《学会合作》教学反思
2014/04/12 职场文书
政协委员个人总结
2015/03/03 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android