首页 > 前端开发 > 正文

web前端开发头像上传 如何使用html5实现利用摄像头拍照上传功能

2023-09-18 00:12:21 | 我爱编程网

最近经常有小伙伴私信询问web前端开发头像上传 如何使用html5实现利用摄像头拍照上传功能相关的问题,今天,我爱编程网小编整理了以下内容,希望可以对大家有所帮助。

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应用上来。

web前端开发头像上传 如何使用html5实现利用摄像头拍照上传功能

前端图片上传给后端还需要给后端字段吗

【聚焦前端实战】后端让我把图片文件和字段一起上传了...
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中是否有数据。然后就...

web前端开发头像上传 如何使用html5实现利用摄像头拍照上传功能

前端上传图片头像到七牛云格式变成text

流程:七牛云后台的对象存储功能,nodejs后台生成七牛云的token,前端利用elementUI/ice的upload组件,文件名和token作为参数请求到七牛云后台。
配置已经完成,写接口用的是express,koa同理,主要做法是先接收前端的图片流转换成图片写入本地image文件中,然后再存储到七牛云,再将本地生成的图片删除,需要新建一个image文件夹 我爱编程网

以上就是我爱编程网小编整理的内容,想要了解更多相关资讯内容敬请关注我爱编程网。
与“web前端开发头像上传 如何使用html5实现利用摄像头拍照上传功能”相关推荐
web前端开发之上传 如何使用HTML5实现拍照上传应用 · Web前端
web前端开发之上传 如何使用HTML5实现拍照上传应用 · Web前端

Web前端开发所需要的知识技能及学习路径Web前端开发所需要的知识技能及学习路径。1.HTML5CSS3JavaScript。Web开发基础中的基础,HTML是负责网页结构,CSS负责网页样式,JS则负责逻辑交互。前两者更像是标记语言,没有什么逻辑,JS才是前端的重中之重。HTML5新增的技术大部分需要结合JS学习。每个人学习进度可能不同,这个阶段主要是多仿站,熟悉基础,试试

2023-09-12 06:08:29
web前端开发上传头像 CSS加JS怎么实现网页移动端上传身份证和头像?
web前端开发上传头像 CSS加JS怎么实现网页移动端上传身份证和头像?

前端上传图片头像到七牛云格式变成text流程:七牛云后台的对象存储功能,nodejs后台生成七牛云的token,前端利用elementUI/ice的upload组件,文件名和token作为参数请求到七牛云后台。配置已经完成,写接口用的是express,koa同理,主要做法是先接收前端的图片流转换成图片写入本地image文件中,然后再存储到七牛云,再将本地生成的图片删除,需要新建一个i

2023-10-04 19:13:46
php文件上传框架 如何在php上实现文件上传功能
php文件上传框架 如何在php上实现文件上传功能

如何在php上实现文件上传功能PHP一般使用POST方法上传文件,下面是一个简单的文件上传示例,里面有相关的注释:up.htm文件:----------&lt;html&gt;&lt;head&gt;&lt;metahttp-equiv="Content-Type"content="text/html;charset=gb2312"&gt;&lt;title&gt;U

2023-09-10 08:19:24
php拖拽框架 html5+php如何实现文件拖动上传功能
php拖拽框架 html5+php如何实现文件拖动上传功能

PHP开发网站有没有类似VB那种可以拖拽按钮"画"界面的软件?直接拖拽控件生成php项目的还真没见过,php做web的话一般前端都是html页面,如果单纯以控件的形式做html页面的话,可以用dreamweaver的设计模式界面,做好html页面后再整合到php项目中。具体整合方式需要参考php项目用的是哪款模版引擎,或者是webapi模式的话,则需要用js等前端脚本开发对应的前端逻辑。

2023-09-01 18:55:51
拖拽php框架 html5+php如何实现文件拖动上传功能
拖拽php框架 html5+php如何实现文件拖动上传功能

PHP最常用的框架是那几个·_php开发框架排行一直以来php框架被广泛利用,多半都是基于mvc架构模式的,还有基于事件驱动模式的,大致列举几个。ThinkPHP是一个性能卓越并且功能丰富的轻量级PHP开发框架,本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、更快速。从1.*版本开始就放弃了对PHP4的兼容,因此整个

2023-09-04 12:09:43
小程序php后端框架 使用微信小程序如何实现图片上传功能
小程序php后端框架 使用微信小程序如何实现图片上传功能

使用微信小程序如何实现图片上传功能这篇文章主要给大家介绍了关于微信小程序实现图片上传功能的相关内容,文中详细介绍了前端+PHP后端的示例代码,对大家的理解和学习具有一定的参考学习价值,需要的朋友们一起学习学习吧。前言几乎每个程序都需要用到图片。下面就来给大家介绍前端+PHP后端实现微信小程序实现图片上传功能,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。方法如

2023-09-23 16:13:57
php用框架上传直接复制 php如何实现文件上传
php用框架上传直接复制 php如何实现文件上传

php如何实现文件上传所谓上传就是把文件从你电脑本地复制到你的项目指定文件夹下。但这有个中间过程,就是复制到系统指定的临时文件夹生成临时文件。然后将临时文件复制到你指定的文件夹下。剩下的就是各种验证了。给你个图片上传方法//上传一张图片$pic=$_FILES['pic'];functionupload($pic){$tmp_name=$pic['tmp_na

2023-10-04 01:50:20
web前端开发头像 圆形头像和方形头像在产品交互或视觉设计上的根本区别概念是什么?
web前端开发头像 圆形头像和方形头像在产品交互或视觉设计上的根本区别概念是什么?

Web前端的学习顺序及内容是什么?第一阶段:HTMLCSS:HTML进阶、CSS进阶、divcss布局、HTMLcss整站开发。JavaScript基础:Js基础教程、js内置对象常用方法、常见DOM树操作大全、ECMAscript、DOM、BOM、定时器和焦点图。JS基本特效:常见特效、例如:tab、导航、整页滚动、轮播图、JS制作幻灯片、弹出层、手风琴菜单、瀑布流布局

2023-09-02 18:42:14