php中在网页中显示图片代码,用PHP将网页上的Canvas图像保存到服务器上的方法

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

这样的一个需求在当时是让我大费周折,但如今想起来,如果用html5的canvas实现,真是太简单了。在《将画布(canvas)图像保存成本地图片的方法》这篇文章里就有一个只用了几行代码就实现了的画板功能——很简单,虽然有一个小bug——但完全能当作签名用。

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

其实很简单,看完下面的这段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进行解码,保存成文件。我在上篇文章中提到的那个火狐浏览器的微博图文分享工具,在服务器端就是用到了这段代码。

有一天你也会需要用到它的,很有用的代码,收藏一下吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xcode 小插件

1.XCode颜色显示插件ColorSense项目地址: https://github.com/omz/ColorSense-for-Xcode2.规范注释生成器VVDocumenter项目地址:https://github.com/onevcat/VVDocumenter-Xcode3.图片名称自动补全 KSImageNamed-Xcode为项目中使用的UIImage的imageNamed…

实现每个点赞用户点击的带属性的字符串

2019独角兽企业重金招聘Python工程师标准>>> #pragma mark - 点击各个点赞用户-(void)setClicked:(TweetCell *)cell andOSCTweet:(OSCTweet *)tweet {NSMutableAttributedString *attributedString [[NSMutableAttributedString alloc] initWithString:tweet.like…

Django与SQL语言中——NULL与空字符串的区别

SQL有指定空值的独特方式,它把空值叫做NULL。 Null在数据库中表示 不知道的数据,主要有3种意思:1)知道数据存在,但不知道具体值.2)不知道数据是否存在.3)数据不存在.在SQL中, NULL的…

php年月转换为年月日,php 将秒数转换为年、月、日、小时等时间格式

这篇文章主要为大家详细介绍了php 将秒数转换为年、月、日、小时等时间格式,具有一定的参考价值,可以用来参考一下。这个有用的函数能将秒数表示的事件转换为年、月、日、小时等时间格式,php将秒数转换为时间(年、月、日、小时…)&#xff0c…

在某公司用到一些shell

shell里是不能像其它语言那样,随随便便就可以按个空隔下去的! shell的输出 echo chiefcto 函数的声明 function name(){ #打印第一个参数 echo “$1” #打印第二个参数 echo “$2” } 函数是怎么执行的呢? 直接在sh里键入 name 如果需要传参&…

grep/egrep和正则表达式汇总

grep, egrep, fgrep语法格式:grep [option] ... PATTERN FILE--colorauto对目标FILE进行搜索,显示能够匹配的行正则表达式基本正则: grep扩展正则: grep -E 或者 egrepfgrep: fast但是不支持正则表达基本正则表达式的元…

xampp php5.6 7.1共存,New XAMPP with PHP 7.2.8, 7.1.20, 7.0.31 5.6.37

嗨,阿帕奇的朋友们!We just released new versions of XAMPP for all platforms with the latest PHP versions: 7.2.8, 7.1.20, 7.0.31 & 5.6.37.您可以下载这些新版本http://www.apachefriends.org/download.html.7.2.8 / 7.1.20 / 7.0.31 / 5.6.3…

基于.net开发chrome核心浏览器【四】

原文:基于.net开发chrome核心浏览器【四】一: 上周去北京出差,给国家电网的项目做架构方案,每天都很晚睡,客户那边的副总也这样拼命工作。 累的不行了,直接导致第四篇文章没有按时发出来。 希望虚心学习1,小…

php5.6 pdo.dll 没有,php5.6没有pdo怎么办

php5.6没有pdo是因为在php5.6中php已经内置了pdo功能,只需要在php.ini文件中将“extensionphp_pdo_firebird.dll”等配置项打开即可。推荐:《PHP视频教程》php5.6中没有php.pdo.dll文件我下载的php 5.6要使用pdo模块,但是通过百度发现发现没有…

javascript获取事件源对象和产生事件的对象

事件源对象是指event对象&#xff0c;其封装了与事件相关的详细信息&#xff0c;比如按键状态。获取事件源对象的方法: 1 <!doctype html>2 <html lang"en"> 3 <head> 4 <title>如何获取事件触发源&#xff08;兼容IE和FireFox&#xff…

git push --no-thin

有时候我们执行 git push 将一个 new branch 推送到远程仓库的时候&#xff0c;会被远程仓库阻止。 可能是我们没有相应的权限吧。然而&#xff0c;我在 git push 的时候加上 --no-thin 参数&#xff0c;就可以将其推送上去了。 $ git push --no-thin origin dev注意&#xff0…

java大小写转置,javascript 字符串 数字反转 字母大小写互换

// 符串abcd123ABCD456 怎么转换为 ABCD321abcd654// 数字要倒序 小写转大写, 大写转小写Array.prototype.reverse function() {var tmp;for (var i 0, j this.length - 1; i < j; i, j--) {tmp this[i];this[i] this[j];this[j] tmp;}return this;};function foo(s) …

网页的背景图片代码

网页背景图片代码1.(最普遍类) <style>body{background-image:url(logo.gif);background-repeat:no-repeat;background-position:center}</style> 说明:以上代码为网页背景图片固定代码&#xff01;网页背景图片固定代码&#xff0c;这样&#xff0c;当向下拉网页时…

andriod 新建 Activity_ Form (详细设置)

参考&#xff1a; Starting Another Activity 去创建Activity New->Other->Android->Android Activity->BlankActivity&#xff1a; 输入对应的信息&#xff1a; 创建完毕后&#xff0c;可以看到新建了对应的 src下面的java文件 layout下面的xml 等等&#xff1a; …

php laypage,layui laypage组件常见用法总结

laypage 的使用非常简单&#xff0c;指向一个用于存放分页的容器&#xff0c;通过服务端得到一些初始值&#xff0c;即可完成分页渲染。核心方法&#xff1a; laypage.render(options) 来设置基础参数。一、laypage的常用基础参数layui.use([laypage], function () {laypage l…

Swift标识符和关键字

任何一种计算机语言都离不开标识符和关键字&#xff0c;下面我们将详细介绍Swift标识符和关键字。 标示符 标识符就是给变量、常量、方法、函数、枚举、结构体、类、协议等指定的名字。构成标识符的字母均有一定的规范&#xff0c;Swift语言中标识符的命名规则如下&#xff1a;…

xhost和XServer相关概念汇总

1、xhost 控制什么人可以访问当前主机上的增强 X-Windows。语法:xhost [ | - ] [ Name ] 2、xhost 是用来控制X server访问权限的。通常当你从hostA登陆到hostB上运行hostB上的应用程序时&#xff0c;做为应用程序来说&#xff0c;hostA是client&#xff0c;但是对图形来说&am…

php 匹配双字节字符串,收集一些常用的正则表达式(匹配中文字符、匹配双字节字符、匹配HTML标记、匹配空行 and so on~~~)...

正则表达式用于字符串处理&#xff0c;表单验证等场合&#xff0c;实用高效&#xff0c;但用到时总是不太把握&#xff0c;以致往往要上网查一番。我将一些常用的表达式收藏在这里&#xff0c;作备忘之用。本贴随时会更新&#xff0c;请持续关注本站。匹配中文字符的正则表达式…

nyist 17 -----记忆式搜索------Accept

//记忆式搜索 #include <iostream>#include<stdio.h>#include<string.h>using namespace std;char a[10002];int b[10002];int n,ans;int f(int x){ int i,t; if(b[x]>0) return b[x]; b[x]1; for(i0;i<x-1;i) { tf(i); if(a[i]<a[x] && b[…

双拓扑排序 HDOJ 5098 Smart Software Installer

题目传送门 1 /*2 双拓扑排序&#xff1a;抄的&#xff0c;以后来补3 详细解释&#xff1a;http://blog.csdn.net/u012774187/article/details/407369954 */5 #include <cstdio>6 #include <algorithm>7 #include <iostream>8 #include <sstream&…