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(H5)已经成为构建交互式和富媒体网站的重要工具。随着移动设备的普及,H5调用本地摄像头实现“扫一扫”功能变得日益常见,这通常用于二维码扫描、人脸识别等场景。本文将深入探讨如何利用H5...
HTML5是一种强大的网页开发技术,它为网页应用带来了许多新的功能和特性,其中之一就是能够访问用户的本地摄像头。这个功能使得开发者可以创建丰富的交互式媒体应用,例如在线视频聊天、虚拟试衣间、实时图像处理等...
在ASP.NET中,我们可以利用JavaScript和HTML5等技术来实现网页对本地硬件资源的访问,比如摄像头。在这个"asp.net网页调用本地摄像头源码"的项目中,开发者提供了一种方法让ASP.NET网页能够调用用户计算机上的摄像头...
网页调用本地摄像头源码是一种常见的应用场景,尤其在视频聊天、在线教育、远程协作等领域,让用户可以在网页上直接使用摄像头进行交互。以下将详细介绍这个主题的相关知识点。 首先,要实现网页调用本地摄像头,...
HTML5是现代网页开发的重要标准,它引入了许多新特性,其中一项便是能够调用本地摄像头进行拍照。这一功能极大地丰富了网页应用的交互性,让用户无需离开页面就能获取和上传图片,常见于在线聊天、虚拟试衣间、证件...
在这个"Html5调用摄像头读取二维码(全部源码)"项目中,我们主要探讨的是如何利用HTML5的 getUserMedia API 和二维码识别库来实现在网页上直接通过摄像头扫描二维码的功能。 1. **getUserMedia API**: 这是HTML5 ...
在这个"webRTC调用本地摄像头demo"中,开发者通过一系列WebRTC API和HTML5特性,实现了一个简单的实时视频预览功能。这个示例对于学习WebRTC的基础使用和理解其工作原理非常有帮助。通过深入研究和扩展这个demo,...
在这个“html5摄像头例子”中,我们将深入探讨HTML5如何实现摄像头功能,以及如何在不同的环境下运行。 首先,HTML5通过`<video>`标签提供了原生的视频处理能力,而`getUserMedia` API则允许我们访问用户的媒体设备...
在ASP中调用本地摄像头的功能,通常是为了实现在线图像采集,比如用户上传头像或者进行实时视频聊天。在这个场景下,我们需要一个摄像头控件来与硬件交互,并通过ASP页面进行控制和展示。 首先,要实现ASP调用本地...
这个功能常用于移动应用或者网页上的快速信息录入,例如登录验证、支付确认等场景。本项目通过简单的JS和HTML代码,实现了调用用户设备的摄像头,捕获静态图片,然后对图片中的二维码进行解析,最终获取到二维码携带...
在现代互联网技术中,网页与硬件设备的交互能力越来越强,特别是随着HTML5的普及,开发者可以更加方便地实现网页对本机硬件资源的访问,比如USB摄像头。本主题聚焦于"网页WEB调用本机USB摄像头",通过WebRTC(Web ...
通过`<input type="file">`、`getUserMedia`、`canvas`和`FormData`等API,我们可以轻松地实现在网页上拍照、预览和上传。然而,也需要注意隐私保护和兼容性问题,以确保应用的稳定性和普适性。
在这个项目中,我们将深入探讨如何利用HTML5的API来实现摄像头调用、视频特效、录制视频、录音、截图、变声、滤波以及音频可视化等功能。 一、调用摄像头 HTML5的`*;capture=camcorder">`标签可以用来请求用户授权...
例如,如果图片显示在一个`<img>`元素上,只需移除该元素即可: ```javascript function deleteImage(imgElement) { imgElement.parentNode.removeChild(imgElement); } ``` 此外,为了实现更完整的功能,如保存...
在Android应用开发中,WebView是一个非常重要的组件,它允许我们加载和显示网页内容。这篇教程将详细介绍如何在Android中利用WebView来调用H5页面,从而实现摄像头扫描二维码的功能。 首先,我们需要理解WebView的...
在Web中远程播放摄像头视频是一项技术密集型...以上就是关于“在Web中远程播放摄像头视频”的主要知识点,涵盖了从摄像头连接到网页显示的整个流程。在实际项目中,还需要根据具体需求和技术环境进行细致的规划和实施。
在HTML5中,实现手机相机拍照并上传照片给后台的功能主要涉及到两个关键API:`<input type="file">`的`capture`属性和File API。下面将详细介绍这两个知识点及其相关应用。 1. `<input type="file">`与`capture`...
实现"通过浏览器显示摄像头视频",还需要处理信令过程。信令是WebRTC中控制和设置通信的过程,包括交换SDP(Session Description Protocol)和ICE(Interactive Connectivity Establishment)候选。SDP包含关于音...
在本项目中,"html5调用本地摄相头拍照上传相片"是一个利用HTML5的新特性来实现的功能,允许用户通过网页直接访问设备的摄像头拍摄照片并上传到服务器。 一、HTML5的媒体元素 HTML5中的`<video>`和`<audio>`元素...
在IT行业中,调用本地摄像头来识别二维码是一种常见的应用场景,特别是在移动互联网和物联网领域。这一技术结合了HTML5、JavaScript(JS)以及可能的第三方库,如QRCode.js或ZXing(Zebra Crossing)库,使得网页...