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
3种平台下安装php4经验点滴
Oct 09 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
php自定义urlencode,urldecode函数实例
Mar 24 PHP
实例讲解yii2.0在php命令行中运行的步骤
Dec 01 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 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设计模式中单例模式的应用分析
2013/05/15 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
一些实用的jQuery代码片段收集
2011/07/12 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
python检测某个变量是否有定义的方法
2015/05/20 Python
Python_LDA实现方法详解
2017/10/25 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
python自动生成sql语句的脚本
2021/02/24 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
会计实训报告范文
2014/11/04 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
在校证明模板
2015/06/17 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python