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 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
桌面中心(一)创建数据库
Oct 09 PHP
PHP类中Static方法效率测试代码
Oct 17 PHP
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
php无限遍历目录示例
Feb 21 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
php警告Creating default object from empty value 问题的解决方法
Apr 02 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 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实现腾讯短网址生成api接口实例
2020/12/08 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
javascript 树控件 比较好用
2009/06/11 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
python实现批量修改文件名代码
2017/09/10 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
Shell如何接收变量输入
2016/08/06 面试题
电子信息专业自荐书
2014/02/04 职场文书
应急管理培训方案
2014/06/12 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
保姆聘用合同
2015/09/21 职场文书
《火烧云》教学反思
2016/02/23 职场文书
合作意向书怎么写
2019/06/24 职场文书
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB