html5拍照功能实现代码(htm5上传文件)


Posted in HTML / CSS onDecember 11, 2013

1、 视频流

HTML5 The Media Capture API提供了对摄像头的可编程访问,用户可以直接用getUserMedia获得摄像头提供的视频流。我们需要做的是添加一个HTML5的Video标签,并将从摄像头获得视频作为这个标签的输入来源(请注意目前仅Chrome和Opera支持getUserMedia)。

复制代码
代码如下:

<videoidvideoid=”video”autoplay=”"></video>
<script>
varvideo_element=document.getElementById(‘video’);
if(navigator.getUserMedia){//operashoulduseopera.getUserMedianow
navigator.getUserMedia(‘video’,success,error);
}
functionsuccess(stream){
video_element.src=stream;
}
</script>

视频流

2、 拍照

拍照功能,我们采用HTML5的Canvas实时捕获Video标签的内容,Video元素能作为Canvas图像的输入,这一点很棒。主要代码如下:

 

复制代码
代码如下:

JavaScript Code复制内容到剪贴板
var canvas=document.createElement(‘canvas’);
var ctx=canvas.getContext(’2d’);
var cw=vw;
var ch=vh;
ctx.fillStyle=”#ffffff”;
ctx.fillRect(0,0,cw,ch);
ctx.drawImage(video_element,0,0,vvw,vvh,0,0,vw,vh);
document.body.append(canvas);

3、 图片获取

下面我们要从Canvas获取图片数据,其核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像,类似于“data:image/png;base64,xxxxx”的格式。

复制代码
代码如下:

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

因为真正图像数据是base64编码逗号之后的部分,所以我们实际服务器处理的图像数据应该是这部分,我们可以用两种办法来获取。

第一种:是在前端截取22位以后的字符串作为图像数据,例如:

复制代码
代码如下:

var data=imgData.substr(22);

如果要在上传前获取图片的大小,可以使用:

 

复制代码
代码如下:

var length=atob(data).length;//atobdecodesastringofdatawhichhasbeenencodedusingbase-64encoding

第二种:是在后端获取传输的数据后用后台语言截取22位以后的字符串。例如PHP里:

复制代码
代码如下:

$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);

4、 图片上传

在前端可以使用Ajax将上面获得的图片数据上传到后台脚本。例如使用jQuery时:

复制代码
代码如下:

$.post(‘upload.php’,{‘data’:data});

 在后台我们用PHP脚本接收数据并存储为图片。
复制代码
代码如下:

functionconvert_data($data){
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);
save_to_file($image);
}
functionsave_to_file($image){
$fp=fopen($filename,’w');
fwrite($fp,$image);
fclose($fp);
}

请注意,以上的解决方案不仅能用于Web App拍照上传,并且你可以实现把Canvas的输出转换为图片上传的功能。这样你可以使用Canvas为用户提供图片编辑,例如裁剪、上色、涂鸦的画板功能,然后把用户编辑完的图片保存到服务器上。

HTML / CSS 相关文章推荐
css3绘制百度的小度熊
Oct 29 HTML / CSS
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
Jul 11 HTML / CSS
css3 按钮样式简单可扩展创建
Mar 18 HTML / CSS
CSS3 animation实现逐帧动画效果
Jun 02 HTML / CSS
纯css实现照片墙3D效果的示例代码
Nov 13 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
Apr 11 HTML / CSS
CSS实现进度条和订单进度条的示例
Nov 05 HTML / CSS
HTML5的结构和语义(4):语义性的内联元素
Oct 17 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
Apr 21 HTML / CSS
HTML5实现移动端弹幕动画效果
Aug 01 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
May 26 HTML / CSS
Html5通过数据流方式播放视频的实现
Apr 27 HTML / CSS
html5教程实现Photoshop渐变色效果
Dec 04 #HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
Dec 04 #HTML / CSS
html5教程画矩形代码分享
Dec 04 #HTML / CSS
html5教程制作简单画板代码分享
Dec 04 #HTML / CSS
html5 viewport使用方法示例详解
Dec 02 #HTML / CSS
html5实现的便签特效(实战分享)
Nov 29 #HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
Nov 29 #HTML / CSS
You might like
php若干单维数组遍历方法的比较
2011/09/20 PHP
PHP运行模式的深入理解
2013/06/03 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
jQuery轮播图实例详解
2018/08/15 jQuery
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
Python实现视频下载功能
2017/03/14 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
python3.6编写的单元测试示例
2019/08/17 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
python提取xml里面的链接源码详解
2019/10/15 Python
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
介绍一下linux的文件系统
2012/03/20 面试题
快递业务员岗位职责
2014/01/06 职场文书
大学生先进事迹材料
2014/02/16 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL