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实现多级树型菜单
Oct 09 PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
PHP提取中文首字母
Apr 09 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 PHP
thinkPHP中create方法与令牌验证实例浅析
Dec 08 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
php-msf源码详解
Dec 25 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数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
利用Python检测URL状态
2019/07/31 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
毕业自我鉴定范文
2013/11/06 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers