最近经常有小伙伴私信询问web前端开发头像上传 如何使用html5实现利用摄像头拍照上传功能相关的问题,今天,我爱编程网小编整理了以下内容,希望可以对大家有所帮助。
如何使用html5实现利用摄像头拍照上传功能
HTML5技术支持WebApp在手机上拍照,显示在页面上并上传到服务器。这是手机微博应用中常见的功能,当然你也可以在其它类型应用中适当使用此技术。
1、 视频流
HTML5 的 The Media Capture(媒体捕捉) API 提供了对摄像头的可编程访问,用户可以直接用 getUserMedia(请注意目前仅Chrome和Opera支持)获得摄像头提供的视频流。我们需要做的是添加一个HTML5 的 Video 标签,并将从摄像头获得的视频作为这个标签的输入来源。
<video id=”video” autoplay=”"></video>
<script>
var video_element=document.getElementById(‘video’);
if(navigator.getUserMedia){ // opera应使用opera.getUserMedianow
navigator.getUserMedia(‘video’,success,error); //success是回调函数,当然你也可以直接在此写一个匿名函数
}
function success(stream){
video_element.src=stream;
}
</script>
此时,video 标签内将显示动态的摄像视频流。下面需要进行拍照了。
2、 拍照
拍照是采用HTML5的Canvas功能,实时捕获Video标签的内容,因为Video元素可以作为Canvas图像的输入,所以这一点很好实现。主要代码如下:
var canvas=document.createElement(‘canvas’); //动态创建画布对象
var ctx=canvas.getContext(’2d’);
var cw=vw,ch=vh;
ctx.fillStyle=”#ffffff”;
ctx.fillRect(0,0,cw,ch);
ctx.drawImage(video_element,0,0,cw,ch,0,0,vw,vh); //将video对象内指定的区域捕捉绘制到画布上指定的区域,可进行不等大不等位的绘制。
document.body.append(canvas);
3、 图片获取
从Canvas获取图片数据的核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像,类似于“data:image/png;base64,xxxxx”的格式。
var imgData=canvas.toDataURL(“image/png”);
这样,imgData变量就存储了一长串的字符数据内容,表示的就是一个PNG图像的base64编码。因为真正的图像数据是base64编码逗号之后的部分,所以要让实际服务器接收的图像数据应该是这部分,我们可以用两种办法来获取。
第一种:是在前端截取22位以后的字符串作为图像数据,例如:
var data=imgData.substr(22);
如果要在上传前获取图片的大小,可以使用:
var length=atob(data).length; //atob 可解码用base-64解码的字串
第二种:是在后端获取传输的数据后用后台语言截取22位以后的字符串(也就是在前台略过上面这步直接上传)。例如PHP里:
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);
4、 图片上传
在前端可以使用Ajax将上面获得的图片数据上传到后台脚本。例如使用jQuery时可以用:
$.post(‘upload.php’,{‘data’:data});
在后台我们用PHP脚本接收数据并存储为图片。
function convert_data($data){
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);
save_to_file($image);
}
function save_to_file($image){
$fp=fopen($filename,’w');
fwrite($fp,$image);
fclose($fp);
}
以上的解决方案不仅能用于Web App拍照上传,也可以通过Canvas的编辑功能函数提供图片编辑,例如裁剪、上色、涂鸦、圈点等功能,然后把用户编辑完的图片上传保存到服务器上。
在还在不断补充修正的HTML5的驱动下,Web App与Native App之间的距离将越来越小。在可预见的不远的未来,越来越多老的和新的开发项目必将会迁移到WEB应用上来。
相关规范:
(为便于阅读,对原文进行了不失原意的适当修改,包括代码中一些错误的重复,并作了注释)
HTML5技术支持WebApp在手机上拍照,显示在页面上并上传到服务器。这是手机微博应用中常见的功能,当然你也可以在其它类型应用中适当使用此技术。
1、 视频流
HTML5 的 The Media Capture(媒体捕捉) API 提供了对摄像头的可编程访问,用户可以直接用 getUserMedia(请注意目前仅Chrome和Opera支持)获得摄像头提供的视频流。我们需要做的是添加一个HTML5 的 Video 标签,并将从摄像头获得的视频作为这个标签的输入来源。
<video id=”video” autoplay=”"></video>
<script>
var video_element=document.getElementById(‘video’);
if(navigator.getUserMedia){ // opera应使用opera.getUserMedianow
navigator.getUserMedia(‘video’,success,error); //success是回调函数,当然你也可以直接在此写一个匿名函数
}
function success(stream){
video_element.src=stream;
}
</script>
此时,video 标签内将显示动态的摄像视频流。下面需要进行拍照了。
2、 拍照
拍照是采用HTML5的Canvas功能,实时捕获Video标签的内容,因为Video元素可以作为Canvas图像的输入,所以这一点很好实现。主要代码如下:
var canvas=document.createElement(‘canvas’); //动态创建画布对象
var ctx=canvas.getContext(’2d’);
var cw=vw,ch=vh;
ctx.fillStyle=”#ffffff”;
ctx.fillRect(0,0,cw,ch);
ctx.drawImage(video_element,0,0,cw,ch,0,0,vw,vh); //将video对象内指定的区域捕捉绘制到画布上指定的区域,可进行不等大不等位的绘制。
document.body.append(canvas);
3、 图片获取
从Canvas获取图片数据的核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像,类似于“data:image/png;base64,xxxxx”的格式。
var imgData=canvas.toDataURL(“image/png”);
这样,imgData变量就存储了一长串的字符数据内容,表示的就是一个PNG图像的base64编码。因为真正的图像数据是base64编码逗号之后的部分,所以要让实际服务器接收的图像数据应该是这部分,我们可以用两种办法来获取。
第一种:是在前端截取22位以后的字符串作为图像数据,例如:
var data=imgData.substr(22);
如果要在上传前获取图片的大小,可以使用:
var length=atob(data).length; //atob 可解码用base-64解码的字串
第二种:是在后端获取传输的数据后用后台语言截取22位以后的字符串(也就是在前台略过上面这步直接上传)。例如PHP里:
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);
4、 图片上传
在前端可以使用Ajax将上面获得的图片数据上传到后台脚本。例如使用jQuery时可以用:
$.post(‘upload.php’,{‘data’:data});
在后台我们用PHP脚本接收数据并存储为图片。
function convert_data($data){
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);
save_to_file($image);
}
function save_to_file($image){
$fp=fopen($filename,’w');
fwrite($fp,$image);
fclose($fp);
}
以上的解决方案不仅能用于Web App拍照上传,也可以通过Canvas的编辑功能函数提供图片编辑,例如裁剪、上色、涂鸦、圈点等功能,然后把用户编辑完的图片上传保存到服务器上。
在还在不断补充修正的HTML5的驱动下,Web App与Native App之间的距离将越来越小。在可预见的不远的未来,越来越多老的和新的开发项目必将会迁移到WEB应用上来。
前端图片上传给后端还需要给后端字段吗
【聚焦前端实战】后端让我把图片文件和字段一起上传了...
2022年11月21日但是如果要把字段和图片文件一起上传那就不支持了,当然也不能像普通的字段上传一样使用JSON,这个时候就要掏出我们的FormData格式了!
CSDN编程社区
大家还在搜
js将文件转为二进制流
vue选择文件夹获取绝对路径
后端响应图片url给前端
前端上传文件到服务器
formdata和json区别
vue上传图片到后端
前端将二进制流转换成图片
通过url访问服务器上的图片
前端怎么把图片传到后端
前端上传图片到数据库
前端适配移动端
js文件转二进制
vue3上传图片
前端图片上传后端服务器
前端传图片给后端
java后端如何传图片给前端
前端上传图片到后端vue
django返回图片给前端
java后端接收前端传来的图片
js给一个对象添加属性
js引入图片
网页堆栈溢出怎么解决
前端上传图片到后端
前端把图片传给后端
图片上传服务器并返回url
前端浏览器适配方案
前端上传图片到后端优化
前后端图片传输
url统一资源定位符
前端上传图片
前端如何上传图片在返给后端 - 糖是苦滴的博客 - CSDN博客
2022年8月9日on-success:后面跟一个方法,通过这个方法我们可以获取到后端返还给我们的url,这个时候我们需要把url通过表单提交给后端,这个时候上传就成功完成了。
CSDN编程社区
前端如何将图片传到后端原生js(nodejs后端保存代码请...
2022年6月21日后端将照片重新命名,就保存到了后端,不需要再传递照片名,后端接收到req.files上面有这个图片原来的名字。
CSDN编程社区
前端上传图片到后端服务器 - RainCat - zZ的博客 - CSDN博客
2021年9月4日JAVA后端 ---这里可以使用MultipartFile直接接收文件信息,也可以使用HttpServletRequest先接收 -...
CSDN编程社区
大家还在搜
前端向后端传输数据的方法有哪些
js给一个对象添加属性
前端图片API
前端上传图片的逻辑
前端上传图片的时机
前后端图片传输
前端上传图片到数据库
前端适配移动端
前端图片上传给后端还需要给后端字段吗 - 资深答主答疑 - 百度问一问
在线
2240位电子数码答主在线答
已服务超1.5亿人5分钟内回复
Hi,为您实时解答电子数码类软硬件等问题,与数码行家、发烧友1对1在线沟通
前端图片上传给后端还需要给后端字段吗
马上提问
vue显示后端传来的图片
116人正在咨询
前端上传图片到服务器
117人正在咨询
做前端好还是后端好
121人正在咨询
vue显示后端传来的图片
116人正在咨询
百度问一问
关于图片上传的问题(后端+前端) - 龙小超的博客 - CSDN博客 - 后端...
2022年10月28日这个方法可以让你接受到从前端接受到的图片,为post传值 前端部分(使用了element-ui的图片上传) <el-image :src="'
CSDN编程社区
图片上传流程&前端上传文件&后端保存文件&并返回图片...
2022年7月26日比如在用户界面,用户选择本地的一张照片,前端把照片传到后端,后端怎么把照片保存到服务器,然后返回...
CSDN编程社区
...思路总结 - 琹箐的博客 - CSDN博客 - 前端上传图片到后端
2022年4月28日注:此处只提供前端向后端传图片思路的大致框架,不能正常运行。转图片的代码未提供,还需整理。 <template> <!--
CSDN编程社区
前端上传图片到后端 - 小饼干 - mum的博客 - CSDN博客 - 前段上传j...
2017年7月25日方法一、前端通过控件传给后端的是经过base64编码的字符串,后端拿到这个字符串后再经过base64解码,把解码后的图片存到服务器的某个位置,然后数...
CSDN编程社区
大家还在搜
前端将图片放在后端
前端把图片传给后端
图片上传前端链接
如何传图片给后端
前端浏览器适配方案
js文件转二进制
图片前后端怎么传输
图片上传服务器并返回url
vue前端上传文件给后端的两种方式 - 觉非逸的博客 - CSDN博客 - v...
2022年5月27日multiple="true" :before-upload="beforeUpload" :customRequest="selfUpload" accept=".png,.jpg" > 上传图片 1 2 3 4 5 6 7 ...
CSDN编程社区
前端上传图片(文件)到后端 - 观棋不语的我的博客 - CSDN博客...
2019年11月23日然后取出文件数组的第一个文件就是你想要上传的文件了, 将其赋值到Vue结构里面, 函数就可以拿来用了。 update:function(){if(!checkEmpty(thi...
CSDN编程社区
前端提交对象给后端:不使用前端技术也可以 - 知乎
2020年12月14日1:前端提交字段数据(可以是from,也可以是get请求,只要能将字段数据发送到后端即可)。
知乎
...彩虹下的布迷的博客 - CSDN博客 - 前端上传图片到后端vue
2022年6月7日前端传图片给后端的方式,是通过bsae64传输,然后后端把接收到的转化为字节流在把图片展示出来 后端传前端直接传输了字节流 Base64是网络上最常...
CSDN编程社区
vue+elementui:前端文件上传与后端文 - 唐代王维写代码...
2022年8月12日vue前端上传文件给后端的两种方式 7303阅读·0评论·0点赞2022年5月27日 使用element-ui中的Upload 上传向后端传输图片 184阅读·0评论·0点...
CSDN编程社区
大家还在搜
前端向后端传输数据的方法有哪些
java后端怎么写接口给前端
web前端开发环境配置
gitee不配置公钥可以上传吗
后端传递图片至前端
vue上传图片的代码
后端怎么给前端图片
前后端获取图片
【前端上传文件,后端保存】 - sgmwgntw的博客 - CSDN博客 - 前端...
2022年8月25日一、前端的要求 1.采用post方式提交数据 2.采用multipart格式上传文件 3.使用input的file控制上传 例: <inputname="myFile"type="file"/> ...
CSDN编程社区
js前端上传图片识一张一张上传要合成一个整体字符串传给...
2022年2月10日js前端上传图片整合一个字符串拼接传给后端 上传了之后是这样的 原始的: 解决方案: 1、...
博客园
前端将文件/图片传给后端 - 灰信网(软件开发博客聚合)
前端将文件/图片传给后端,灰信网,软件开发博客聚合,程序员专属的优秀博客文章阅读平台。
www.freesion.com
【Web前端问题】前端上传图片该如何传数据给后端,如果...
2021年4月30日除了uploadFiles外还要传递图片key等数据给后端,用上述input选择图片后,传递数据会把图片路径还是图片...
www.h5w3.com
大家还在搜
如何传图片给后端
前端传输图片到后端
前端传文件给后端
图片前后端怎么传输
Java实现文件上传
图片是传到后端还是前端
前端如何传图片给后端
vue3实现图片上传
...图片并上传,前端一步到位,无需用到后端 - 子慕大诗人...
2015年8月24日本质还是需要先上传到后台,最后还是后端剪裁,和之前的方式一样,只是用了canvas而已。 自己实现前端剪裁一步到位: 后来我就想了想canvas能存储ba...
博客园
前端怎么传图片给后台(java)? - 百度知道
2个回答回答时间:2018年2月23日
最佳回答:你可以现在前台控制台打印一下base64的流,看看是否获取图片成功。如果成功再去后台看看获取的文件信息,haerd中是否有数据。然后就...
前端上传图片头像到七牛云格式变成text
流程:七牛云后台的对象存储功能,nodejs后台生成七牛云的token,前端利用elementUI/ice的upload组件,文件名和token作为参数请求到七牛云后台。
配置已经完成,写接口用的是express,koa同理,主要做法是先接收前端的图片流转换成图片写入本地image文件中,然后再存储到七牛云,再将本地生成的图片删除,需要新建一个image文件夹
我爱编程网以上就是我爱编程网小编整理的内容,想要了解更多相关资讯内容敬请关注我爱编程网。