PHP+Javascript实现在线拍照功能实例


Posted in PHP onJuly 18, 2015

本文实例讲述了PHP+Javascript实现在线拍照功能。分享给大家供大家参考。具体如下:

我们在一些WEB应用中可能会遇到这样的情况,用户需要自己现场拍照并上传到会员系统。比如驾校采集指纹拍照流程、考试现场采集照片等。我们今天要讲的是如何使用javascript和PHP实现一个简单的在线拍照并上传的功能。

实现这个功能的前提是你的电脑设备上需要安装有摄像头设备,以及你的浏览器需要支持flash

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Javascript+PHP实现在线拍照功能</title>
</head>
<body>
<div id="cam">
<!--调用摄像组件并显示图像-->
<input type=button value="点击这里拍照" class="btn" onclick="take_snapshot()">
http://siteweb.com/sitemaps.xml
</div>
<div id="results">
<!--显示上传结果-->
</div>
</body>
</html>

在body中加入一个用于调用摄像组件的容器id#cam和一个显示上传信息的容器id#results。
 
Javascript
 
接下来调用摄像组件,我们先载入webcam.js,用于拍照和上传的js库。

<script type="text/javascript" src="webcam.js"></script>
 
然后在容器id#cam中,加入以下代码:
<script language="JavaScript">
webcam.set_api_url( 'action.php' );
webcam.set_quality( 90 ); // 图像质量(1 - 100)
webcam.set_shutter_sound( true ); // 拍照时播放声音
document.write( webcam.get_html(320, 240, 160,120) );
</script>

我们调用了webcam,其中webcam.set_api_url用来设置图像上传交互的php路径,set_quality可设置图像质量,set_shutter_sound设置声音,get_html输出摄像组件,参数即宽度、高度、上传后宽度、上传后高度。
 
当点击按钮拍照时,需要执行以下代码:

<script language="JavaScript">
webcam.set_hook( 'onComplete', 'my_completion_handler' );
function take_snapshot() {
document.getElementById('results').innerHTML = '<h4>Uploading...</h4>';
webcam.snap();
}
function my_completion_handler(msg) {
if (msg.match(/(http\:\/\/\S+)/)) {
var image_url = RegExp.$1;
document.getElementById('results').innerHTML =
'<h4>Upload Successful!</h4>' +
'<img src="' + image_url + '">';
webcam.reset();
}
else alert("PHP Error: " + msg);
}
</script>

当执行拍照动作时,代码与后台php交互,如果上传图片完成后,则返回相应的信息。
 
PHP
 
action.php所做的就是将本地拍照的图像上传到服务器,并将图片路径返回给前端。注意存放图片的路径要给写权限。

$filename = date('YmdHis') . '.jpg';
$result = file_put_contents( 'pics/'.$filename, file_get_contents('php://input') );
if (!$result) {
print "ERROR: Failed to write data to $filename, check permissions\n";
exit();
}
$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/pics/' . $filename;
print "$url\n";

这里只是简单的介绍了下在线拍照和上传功能,其实深入应用场景如上传后再裁剪,生成多张不同比例的图像等等,大家自己去琢磨吧。

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP连接MongoDB示例代码
Sep 06 PHP
PHP 读取大文件的X行到Y行内容的实现代码
Jun 24 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
Mar 11 PHP
php递归遍历多维数组的方法
Apr 18 PHP
php支持中文字符串分割的函数
May 28 PHP
php实现将Session写入数据库
Jul 26 PHP
php简单实现批量上传图片的方法
May 09 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 PHP
浅谈laravel中的关联查询with的问题
Oct 10 PHP
php实现的简单多进程服务器类完整示例
Feb 01 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 #PHP
简单谈谈PHP vs Node.js
Jul 17 #PHP
php+html5基于websocket实现聊天室的方法
Jul 17 #PHP
php获取错误信息的方法
Jul 17 #PHP
PHP实现C#山寨ArrayList的方法
Jul 16 #PHP
PHP计算加权平均数的方法
Jul 16 #PHP
PHP基于工厂模式实现的计算器实例
Jul 16 #PHP
You might like
实现“上一页”和“下一页按钮
2006/10/09 PHP
drupal 代码实现URL重写
2011/05/04 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
Vuex实现数据增加和删除功能
2019/11/11 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
对Python w和w+权限的区别详解
2019/01/23 Python
python日志logging模块使用方法分析
2019/05/23 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
HTML5制作表格样式
2016/11/15 HTML / CSS
体育教育专业自荐信范文
2013/12/20 职场文书
工程安全员岗位职责
2014/03/09 职场文书
租赁意向书范本
2014/04/01 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
转变工作作风心得体会
2016/01/23 职场文书
高中物理教学反思
2016/02/19 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js