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加密解密的代码
Oct 09 PHP
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
php获取汉字首字母的函数
Nov 07 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
php使用google地图应用实例
Dec 31 PHP
帝国cms目录结构分享
Jul 06 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
Mar 18 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
PHP让网站移动访问更加友好方法
Feb 14 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
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
python中如何进行连乘计算
2020/05/28 Python
序列化Python对象的方法
2020/08/01 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
存储过程和函数的区别
2013/05/28 面试题
装潢设计专业推荐信模板
2013/11/26 职场文书
校运会入场式解说词
2014/02/10 职场文书
趣味运动会开幕词
2015/01/28 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书