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地图动态实例代码(圆圈向外扩散)
Jun 15 HTML / CSS
CSS3教程(1):什么是CSS3
Apr 02 HTML / CSS
几个CSS3的flex弹性盒模型布局的简单例子演示
May 12 HTML / CSS
详解利用css3的var()实现运行时改变scss的变量值
Mar 02 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
Jul 16 HTML / CSS
html5版canvas自由拼图实例
Oct 15 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
Mar 13 HTML / CSS
HTML5新标签兼容——&gt; 的两种方法
Sep 12 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
Aug 18 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
Nov 30 HTML / CSS
基于CSS3画一个iPhone
Apr 21 HTML / CSS
能用CSS实现的就不要麻烦JavaScript了
Oct 05 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
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
jQuery :first选择器使用介绍
2013/08/09 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
python使用scrapy解析js示例
2014/01/23 Python
简单谈谈python中的多进程
2016/11/06 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
Python IDLE清空窗口的实例
2018/06/25 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
使用python远程操作linux过程解析
2019/12/04 Python
Python callable内置函数原理解析
2020/03/05 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
Hibernate持久层技术
2013/12/16 面试题
软件项目开发计划书
2014/05/01 职场文书
民事赔偿协议书
2014/11/02 职场文书
2015年实习单位评语
2015/03/25 职场文书
《称赞》教学反思
2016/02/17 职场文书