`

html5调用手机摄像头,实现拍照上传功能

 
阅读更多

今天做手机网站,想实现手机扫描二维码功能。首先实现在浏览器中调用手机摄像头,实现拍照功能并且把拍下的照片显示在页面并上传到服务器上,然后再在服务器端进行分析。

首先实现在浏览器中调用摄像头,当然用现在火的不行的html5,html5中的<video>标签,并将从摄像头获得视频作为这个标签的输入来源。实现拍照功能的html5代码:

<article>
 <style scoped>
  video { transform: scaleX(-1); }
  p { text-align: center; }
 </style>
 <h1>Snapshot Kiosk</h1>
 <section id="splash">
  <p id="errorMessage">Loading...</p>
 </section>
 <section id="app" hidden>
  <p><video id="monitor" autoplay></video> <canvas id="photo"></canvas>
  <p><input type=button value="&#x1F4F7;" onclick="snapshot()">
 </section>
 <script>
  navigator.getUserMedia({video:true}, gotStream, noStream);
  var video = document.getElementById('monitor');
  var canvas = document.getElementById('photo');
  function gotStream(stream) {
    video.src = URL.createObjectURL(stream);
    video.onerror = function () {
      stream.stop();
    };
    stream.onended = noStream;
    video.onloadedmetadata = function () {
      canvas.width = video.videoWidth;
      canvas.height = video.videoHeight;
      document.getElementById('splash').hidden = true;
      document.getElementById('app').hidden = false;
    };
  }
  function noStream() {
    document.getElementById('errorMessage').textContent = 'No camera available.';
  }
  function snapshot() {
    canvas.getContext('2d').drawImage(video, 0, 0);
  }
 </script>
</article>

经本人测试在android手机的opera浏览器浏览器下可以正常实现手机拍照功能。android手机下的google chrome浏览器还不行,自带的浏览器也测试没有通过。iphone手机的safari浏览器也是不支持的。

想了解更多关于html5调用手机摄像头的内容可以点击http://dev.w3.org/2011/webrtc/editor/getusermedia.html。

图片的获取

下面我们要从Canvas获取图片数据,其核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像,类似于“data:image/png;base64,xxxxx”的格式。
Html代码

var imgData =canvas.toDataURL("image/png");

因为真正图像数据是base64编码逗号之后的部分,所以我们实际服务器处理的图像数据应该是这部分,我们可以用两种办法来获取。

第一种:是在前端截取22位以后的字符串作为图像数据,例如:
Html代码

var data = imgData.substr(22);

如果要在上传前获取图片的大小,可以使用:
Html代码

var length = atob(data).length;// atob decodes a string of data which has been encoded using base-64 encoding

第二种:是在后端获取传输的数据后用后台语言截取22位以后的字符串。例如PHP里
php代码:

$image = base64_decode( str_replace('data:image/jpeg;base64,', '',$data);

图片上传:

在前端可以使用Ajax将上面获得的图片数据上传到后台脚本。例如使用jQuery时:
js代码

$.post('upload.php',{ 'data' : data } );

在后台我们用PHP脚本接收数据并存储为图片。
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的输出转换为图片上传的功能。这样你可以使用Canvas为用户提供图片编辑,例如裁剪、上色、涂鸦的画板功能,然后把用户编辑完的图片保存到服务器上。

分享到:
评论

相关推荐

    H5实现web调用摄像头在线照相

    总之,HTML5的MediaDevices接口和相关API为开发者提供了强大的能力,可以轻松地在Web页面上实现调用摄像头进行在线拍照。通过不断优化和测试,我们可以确保这一功能在各种浏览器和设备上都能良好运行,为用户提供...

    H5实现调用手机摄像头相册。完美实现图片压缩、预览、删除的功能。---Demo

    本文将深入探讨如何使用H5技术来实现调用手机摄像头、相册,以及图片的压缩、预览和删除功能。这些功能对于移动设备上的网页应用尤其重要,因为它们能够提供与原生应用类似的用户体验。 首先,调用手机摄像头和相册...

    ASP调用摄像头拍照并保存

    在ASP中调用摄像头拍照并保存的功能,对于在线交互式应用,如用户头像上传、远程会议或者在线教学等场景非常实用。这个功能的实现通常需要借助第三方组件或JavaScript库,以及一些服务器端处理图片的脚本。 首先,`...

    HTML5调用本地摄像头拍照

    综上所述,HTML5调用本地摄像头拍照是一项强大的功能,通过合理的编程和良好的用户体验设计,可以在多个领域带来创新和便捷。但同时,开发者也需要关注兼容性、安全性和用户隐私等问题,以确保应用在不同环境下都能...

    H5调用电脑摄像头实现拍照功能

    要调用摄像头,我们首先需要在JavaScript中请求用户授权访问摄像头。以下是一个基本的代码示例: ```javascript if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { navigator.mediaDevices....

    JS实现微信公众号Html5页面调用手机照相机识别二维码

    1、使用jweixin-1.4.0.js实现微信公众号Html5页面调用手机照相机识别二维码 2、核心代码已经给到txt文件中,可以根据需要自行扩充。 3、二维码可以由自己的API生成,应用到很多领域。

    js调用本地摄像头拍照并上传到web服务器

    &lt;title&gt;JS调用摄像头拍照 拍照"&gt; &lt;video id="video" width="640" height="480" autoplay&gt;&lt;/video&gt; &lt;canvas id="canvas" width="640" height="480"&gt;&lt;/canvas&gt; document.getElementById('takePhoto')....

    Html5调用手机摄像头并实现人脸识别的实现

    混合App开发,原生壳子+webApp,在web部分调用原生摄像头功能并且在网页指定区域显示摄像头内容,同时可以手动拍照并进行人脸识别,将识别结果显示在网页上。 技术栈 vue、Html5、video标签、Android、IOS、百度AI ...

    html5调用摄像头拍照ajax java上传

    HTML5是一种先进的Web开发技术,它为网页应用提供了更丰富的功能和更强的交互性。...通过这个实现,用户可以在网页上轻松地使用摄像头拍照并上传至服务器,提升用户体验的同时也展示了现代Web开发的技术实力。

    多种方式ASP调用摄像头拍照并保存插件

    标题中的“多种方式ASP调用摄像头拍照并保存插件”是指在不同的Web开发环境中,如ASP、ASP.NET、JSP和PHP,实现调用用户电脑或服务器上的摄像头进行拍照,并将拍摄的照片保存到服务器的技术解决方案。这个插件可能...

    HTML5+jQuery+Canvas调用手机拍照功能上传图片

    在现代Web开发中,HTML5、Canvas和jQuery的结合提供了许多强大的功能,其中之一就是能够调用手机摄像头拍照并上传图片。这个技术应用广泛,尤其在移动设备上的网页应用,为用户提供了更直观、便捷的交互体验。下面...

    html页面通过ActiveX控件调用摄像头实现拍照上传demo代码下载

    摄像头控件用于在Web编程中辅助您完成图像采集、截图,并上传到服务器当中,支持USB外置摄像头、内置摄像头及部分型号高拍仪设备. 该摄像头控件工作在客户端浏览器中,支持多种服务器端编程技术及部署环境,支持...

    ASP.Net调用摄像头拍照

    ASP.NET调用摄像头拍照是一个常见的前端应用场景,尤其在开发在线教育、远程办公或者互动娱乐类网站时非常有用。本文将详细介绍如何使用JavaScript与ASP.NET结合,实现调用用户计算机的摄像头进行拍照的功能。 首先...

    html5调用本地摄相头拍照上传相片

    通过这个例子,你可以学习到如何结合HTML5、JavaScript以及Fetch API来实现一个基本的在线拍照并上传图片的功能。在实际应用中,你可能还需要考虑性能优化、错误处理以及用户体验等方面的细节。

    通用浏览器调用摄像头拍照

    本文将详细讲解如何实现"通用浏览器调用摄像头拍照"的功能,同时兼顾IE(Internet Explorer)和其他非IE浏览器。 一、HTML5的MediaDevices接口 这个功能主要依赖于HTML5的`MediaDevices`接口,它提供了一系列的...

    在html5网页中实现用手机相机拍照功能,并上传照片给后台.zip

    在HTML5中,实现手机相机拍照并上传照片给后台的功能主要涉及到两个关键API:`&lt;input type="file"&gt;`的`capture`属性和File API。下面将详细介绍这两个知识点及其相关应用。 1. `&lt;input type="file"&gt;`与`capture`...

    asp.net+h5实现网页调用摄像头拍照功能的完整示例

    在本示例中,我们将探讨如何使用ASP.NET和HTML5技术实现在网页上调用摄像头进行拍照的功能。这个功能在现代Web应用中非常常见,比如在线证件照上传、虚拟试衣间、视频会议等场景。以下是你需要了解的关键知识点: 1...

    h5调用摄像头拍照

    其中,HTML5调用摄像头拍照的功能让网页应用能够直接与用户的设备硬件进行交互,从而实现更丰富的功能。本篇将深入探讨如何利用HTML5来实现摄像头拍照并上传照片。 一、HTML5的MediaDevices接口 HTML5的...

Global site tag (gtag.js) - Google Analytics