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 相关文章推荐
分享8款纯CSS3实现的搜索框功能
Sep 14 HTML / CSS
CSS3伪类选择器:nth-child()
Apr 02 HTML / CSS
css3实现一款模仿iphone样式的注册表单
Mar 20 HTML / CSS
解决CSS3的opacity属性带来的层叠顺序问题
May 09 HTML / CSS
css3 flex实现div内容水平垂直居中的几种方法
Mar 27 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
Jul 22 HTML / CSS
用HTML5制作数字时钟的教程
May 11 HTML / CSS
HTML5 3D衣服摇摆动画特效
Mar 17 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
Apr 17 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
Dec 10 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
Sep 27 HTML / CSS
CSS文本阴影 text-shadow 悬停效果详解
May 25 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
PHP与javascript对多项选择的处理
2006/10/09 PHP
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
PHP 事件机制(2)
2011/03/23 PHP
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
Python的requests网络编程包使用教程
2016/07/11 Python
详解python 发送邮件实例代码
2016/12/22 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
python多任务之协程的使用详解
2019/08/26 Python
Django之PopUp的具体实现方法
2019/08/31 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
党建工作经验交流材料
2014/05/25 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
网吧温馨提示
2015/07/17 职场文书
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技