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 和 XML: 使用expat函数(三)
Oct 09 PHP
php中一个有意思的日期逻辑处理
Mar 25 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
Laravel框架中实现使用阿里云ACE缓存服务
Feb 10 PHP
php判断用户是否手机访问代码
Jun 08 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
php 数据结构之链表队列
Oct 17 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 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
Zend Guard一些常见问题解答
2008/09/11 PHP
php MYSQL 数据备份类
2009/06/19 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
详细解读Python中解析XML数据的方法
2015/10/15 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
python字符串判断密码强弱
2020/03/18 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
敬老文明号事迹材料
2014/01/16 职场文书
时尚休闲吧创业计划书
2014/01/25 职场文书
管理提升方案
2014/06/04 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
浅谈Node的内存泄露问题
2022/05/06 NodeJs