PHP实现将HTML5中Canvas图像保存到服务器的方法


Posted in PHP onNovember 28, 2014

本文实例讲述了PHP实现将HTML5中Canvas图像保存到服务器的方法。分享给大家供大家参考。具体实现方法如下:

一、问题:

在几年前HTML5还没有流行的时候,我们的项目经理曾经向我提出这样一个需求:让项目评审专家们在评审结束时用笔在平板电脑上进行电子签名。这需要我们评审软件里提供这样一个功能:打开浏览器,登录,进入评审意见页,页面最下部有个方块区域,用户在这里用触摸笔进行签名,然后这个签名将会保持的服务器上。

这样的一个需求在当时是让我大费周折,但如今想起来,如果用html5的canvas实现,真是太简单了。在《在HTML5 Canvas中放入图片和保存为图片的方法》这篇文章里就实现了这一功能。

二、解决方法:

之前说了很多如何将canvas图像保存成图片并下载的方法,但这些方法都是将图片保存到客户端,而我们的签名需求是需要将canvas的内容保存到服务器端,如何实现?

其实很简单,看完下面的这段PHP代码,相信你也会觉得很简单。

<?php

 // requires php5

 define('UPLOAD_DIR', 'images/');

 $img = $_POST['img'];

 $img = str_replace('data:image/png;base64,', '', $img);

 $img = str_replace(' ', '+', $img);

 $data = base64_decode($img);

 $file = UPLOAD_DIR . uniqid() . '.png';

 $success = file_put_contents($file, $data);

 print $success ? $file : 'Unable to save the file.';

?>

从网页上传到服务器端的图片是base64_encode转码过的Data URL格式,数据在服务器端用base64_decode进行解码,保存成文件。

或许有一天你也会需要用到它的,觉得很有用的话就收藏一下吧!

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

PHP 相关文章推荐
php目录管理函数小结
Sep 10 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
Jul 03 PHP
php 购物车完整实现代码
Jun 05 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
php 使用file_get_contents读取大文件的方法
Nov 13 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
非常经典的PHP文件上传类分享
May 15 PHP
php根据用户名和手机号查询是否存在手机号码
Feb 16 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 #PHP
php的mssql数据库连接类实例
Nov 28 #PHP
smarty中post用法实例
Nov 28 #PHP
smarty简单入门实例
Nov 28 #PHP
php最简单的删除目录与文件实现方法
Nov 28 #PHP
php查找指定目录下指定大小文件的方法
Nov 28 #PHP
thinkphp四种url访问方式详解
Nov 28 #PHP
You might like
PHP中执行cmd命令的方法
2014/10/11 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
JavaScript入门之基本函数详解
2011/10/21 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
Less 安装及基本用法
2018/05/05 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Python中为什么要用self探讨
2015/04/14 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
Python Merge函数原理及用法解析
2020/09/16 Python
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
端午节活动策划方案
2014/03/09 职场文书
出纳担保书范文
2014/04/02 职场文书
工程部岗位职责
2015/02/10 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
创业计划书之家教中心
2019/09/25 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
Python自动化测试PO模型封装过程详解
2021/06/22 Python