jSignature网页手写签名

一、效果图

这里写图片描述
  注意:1、CSS样式自己调,这里写的很简陋。
     2、单击下载,并不是下载图片,而是保存到后台。
     3、注意js的引用。

二、前端

<!DOCTYPE html>
<html lang="zh-CN">
<head><title>手写板签名demo</title><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><meta charset="UTF-8"><meta name="description" content="overview & stats" /><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /><script src="./js/jquery-2.0.3/jquery-2.0.3.min.js"></script><script src="./js/jSignature/jSignature.min.js"></script><script>$(function() {var $sigdiv = $("#signature");$sigdiv.jSignature(); // 初始化jSignature插件-属性用","隔开// $sigdiv.jSignature({'decor-color':'red'}); // 初始化jSignature插件-设置横线颜色// $sigdiv.jSignature({'lineWidth':"6"});// 初始化jSignature插件-设置横线粗细// $sigdiv.jSignature({"decor-color":"transparent"});// 初始化jSignature插件-去掉横线// $sigdiv.jSignature({'UndoButton':true});// 初始化jSignature插件-撤销功能// $sigdiv.jSignature({'height': 100, 'width': 200}); // 初始化jSignature插件-设置书写范围(大小)$("#yes").click(function(){//将画布内容转换为图片var datapair = $sigdiv.jSignature("getData", "image");$("#images").attr('src','data:' + datapair[0] + "," + datapair[1]);});$("#download").click(function(){var src_data = $("#images").attr('src');// console.log(src);if(src_data){$.ajax({type:'post',url:'./base64.php',data:{src_data:src_data},async:false,success:function(data){// console.log(data);if(data){alert(data);// alert('生成签名成功!');}else{alert('生成失败!');}}});}else{alert('图片不能为空!');return false;}});$("#reset").click(function(){$("#signature").jSignature("reset"); //重置画布,可以进行重新作画$("#images").attr('src','');});});</script>
</head>
<body><div id="signature"></div><p style="text-align: center"><b style="color: red">请按着鼠标写字签名。</b></p><input type="button" value="保存" id="yes"/><input type="button" value="下载" id="download"/><input type="button" value="重写" id="reset"/><div id="someelement"><img src="" id="images"></div>
</body>
</html>

三、后台

<?php
/*  base64格式编码转换为图片并保存对应文件夹 */  
$base64_content = $_POST['src_data'];
// echo $base64_content;die;//截取数据为数组
$base64_content= explode(',',$base64_content); //生成目录:demo所在根目录下
// $new_file = "./".date('Ymd',time())."/";  
$new_file = date('Ymd',time())."/";  
if(!file_exists($new_file)){  //检查是否有该文件夹,如果没有就创建,并给予最高权限  mkdir($new_file, 0700);  
}//文件后缀名
$type = 'png';
//生成文件名:相对路径
$new_file = $new_file.time().".$type";//转换为图片文件
if (file_put_contents($new_file,base64_decode($base64_content[1]))){echo $new_file;  
}else{ return false;  
}  ?>

四、下载手写签名图片

1、前端代码

$.ajax({type:'post',url:'./base64.php',data:{src_data:src_data},async:false,dataType:'json',success:function(data){if(data){//跳转下载链接window.location.href = data.url;// alert('生成签名成功!');}else{alert('生成失败!');}}
});

2、后台base64.php代码

<?php
header('Content-Type:text/html,charset=utf-8');
/*  base64格式编码转换为图片并保存对应文件夹 */  
$base64_content = $_POST['src_data'];
// echo $base64_content;die;//截取数据为数组
$base64_content= explode(',',$base64_content); //生成目录:demo所在根目录下
// $new_file = "./".date('Ymd',time())."/";  
$new_file = date('Ymd',time())."/";  
if(!file_exists($new_file)){  //检查是否有该文件夹,如果没有就创建,并给予最高权限  mkdir($new_file, 0700);  
}//文件后缀名
$type = 'png';
//生成文件名:相对路径
$new_file = $new_file.time().".$type";//转换为图片文件并返回图片链接
if (file_put_contents($new_file,base64_decode($base64_content[1]))){$url = $_SERVER['HTTP_REFERER'].'/download.php?url='.$new_file;$result['url'] = $url;$result['status'] = 1;echo json_encode($result);die;		
}else{$result['status'] = 0;echo json_encode($result);die; 
} 

3、后台download.php代码

<?phpheader('Content-Type:text/html,charset=utf-8');//下面是输出下载;// ob_end_clean();//清除缓存以免乱码出现// echo 1111;die;$new_file = $_GET['url'];// var_dump($new_file);die;header ( "Cache-Control: max-age=0" );header ( "Content-Description: File Transfer" );header ( 'Content-disposition: attachment; filename='.basename($new_file)); //文件名header ( "Content-Type: application/png" ); //文件格式:pngheader ( "Content-Transfer-Encoding: binary" ); // 告诉浏览器,这是二进制文件header ( 'Content-Length: ' . filesize ( $new_file ) ); //告诉浏览器,文件大小@readfile ( $new_file );//输出文件;
?>

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

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

相关文章

MySQL高级特性之分区表

对于用户而言&#xff0c;分区表是一个独立的逻辑表&#xff0c;但是在底层由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装&#xff0c;对分区表的请求都会通过句柄对象转化成对存储引擎的接口调用 意义 MySQL在创建表的时候可以通过使用 PARTITION …

关于纯HTML格式写入word

用mht格式生成的word文档不适合批量导出&#xff0c;用纯HTML生成的word文件可以批量导出。我不适用框架直接用localhost本地执行PHP文件的格式如下&#xff1a; <?php header("content-type:text/html;charsetutf-8"); class word{function start(){ob_start()…

判断radio单选按钮是否选中

使用jquery进行判断radio单选是否选中并获取选中的value值。 直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><script src"https://apps.bdim…

postman上传图片时已经添加cookie,但仍显示未登陆

postman上传图片时&#xff0c;已经添加过cookie&#xff0c;但是返回的结果是用户未登陆&#xff0c;如下图所示&#xff1a; 我的解决办法是&#xff1a;清楚cookie code中的cookie 最终的结果如下&#xff1a;成功 转载于:https://www.cnblogs.com/1510152012huang/p/102825…

关于Oracle数据库导入数据显示中文乱码

一、遇到的问题 问题一&#xff1a;某xxxx.sql文件&#xff0c;里面都是insert语句&#xff0c;并且文本编辑器打开文件查看&#xff0c;里面待插入的中文数据显示正常&#xff0c;但是通过命令行&#xff0c;使用“xxxx.sql”导入数据库后&#xff0c;发现数据库中的中文数据都…

五大主流浏览器及内核

谷歌浏览器&#xff1a;Google Chrome内核&#xff1a;Webkit/blink火狐浏览器&#xff1a;Mozilla Firefox内核&#xff1a;Gecko欧鹏浏览器&#xff1a;opera内核&#xff1a;blink苹果浏览器&#xff1a;Safari内核&#xff1a;WebkitI E 浏 览 器&#xff1a;Windows Inter…

MySQL日期与时间函数

MySQL日期与时间函数 MySQL服务器中的三种时区设置&#xff1a;   ①系统时区—保存在系统变量system_time_zone   ②服务器时区—保存在全局系统变量global.time_zone   ③每个客户端连接的时区—保存在会话变量session.time_zone 注意&#xff1a;   客户端时区…

Docker:单机编排工具docker-compose [十二]

一、docker-compose的安装 1、安装 curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum install -y python2-pip pip install -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose2、检查是否安装成功 docker-compose -v 二、docke…

MySQL之算术表达式、聚合函数及GROUP BY 与 HANVING 等函数的应用

一、MySQL的算术表达式 算术表达式就是加减乘除的运算过程&#xff0c;主要是对一条数据中出现的数字进行统计和运算。 首先&#xff0c;有一张数据表&#xff0c;如下&#xff1a; mysql> select * from test_score; ------------------------------------------ | id | c…

B1023 组个最小数 (20分)

B1023 组个最小数 &#xff08;20分&#xff09; 给定数字 0-9各若干个。你可以以任意顺序排列这些数字&#xff0c;但必须全部使用。目标是使得最后得到的数尽可能小&#xff08;注意 0 不能做首位&#xff09;。例如&#xff1a;给定两个 0&#xff0c;两个 1&#xff0c;三个…

关于PHP下载文件功能中header()书写方式

一、下载所用header头 header ( "Cache-Control: max-age0" ); header ( "Content-Description: File Transfer" ); header ( Content-disposition: attachment; filename.basename($new_file)); //文件名 header ( "Content-Type: application/png&…

namespace命名空间的使用

一、何为命名空间 PHP 命名空间(namespace)是在PHP 5.3中加入的。“什么是命名空间&#xff1f;从广义上来说&#xff0c;命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如&#xff0c;在操作系统中目录用来将相关文件分组&#xff0c;对于目录中的文件…

JS关键字和保留字汇总(小记)

ECMA-262 描述了一组具有特定用途的关键字。这些关键字可用于表示控制语句的开始或结束&#xff0c;或者用于执行特定操作等。按照规则&#xff0c;关键字也是语言保留的&#xff0c;不能用作标识符。以下就是ECMAScript的全部关键字&#xff08;带*号上标的是第5 版新增的关键…

HTML DOM文档对象查找元素的方法

一、HTML DOM 节点 在 HTML DOM (Document Object Model) 中 , 每一个元素都是 节点: 文档是一个文档节点。所有的HTML元素都是元素节点。所有 HTML 属性都是属性节点。文本插入到 HTML 元素是文本节点。注释是注释节点。 二、Document 对象 当浏览器载入 HTML 文档, 它就会…

MySQL的外键约束

一、MySQL外键 外键表示一个表中的一个字段被另一个表中的一个字段引用。外键对相关表中的数据造成了限制&#xff0c;使MySQL的能够保持参照完整性。只有InnoDB类型的表才可以使用外键。    1、外键的好处   可以使得两张表关联&#xff0c;保证数据的一致性和实现一些…

快速排序(C语言)

快速排序 快速排序是一种不稳定排序&#xff0c;它的时间复杂度为O(nlgn)&#xff0c;最坏情况为O(n2)&#xff1b;空间复杂度为O(nlgn)。 这种排序方式是对于冒泡排序的一种改进&#xff0c;它采用分治模式&#xff0c;将一趟排序的数据分割成独立的两部分&#xff0c;其中一…

前端页面-不可编辑控制

1. spring-form 库的使用和不可编辑控制 <form:input path"title" htmlEscape"false" class"form-control required"/> 页面元素不可编辑控制 readOnly“true”&#xff1b; 对input&#xff0c;textArea 有效 disadbled"true";…

js+获取当前域名及跳转、下载操作

一、js获取当前域名 1、方法一 var domain document.domain;2、方法二 var domain window.location.host;3、注意问题   由于获取到的当前域名不包括 http://&#xff0c;所以把获取到的域名赋给 a 标签的 href 时&#xff0c;别忘了加上 http://&#xff0c;否则单击链…

哈希表,哈希算法(C语言)

哈希表 哈希表&#xff0c;又称散列表&#xff0c;常用于在海量数据中查找数据 哈希表中元素是由哈希函数确定的。将数据元素的关键字key作为自变量&#xff0c;通过一定的函数关系H(称为哈希函数)&#xff0c;计算出的值&#xff0c;即为该元素的存储地址。其优点是&#xf…

【OP放大器】在不拆开OP放大器的情况下查一查它是否坏掉或饱和。

用高阻抗的示波器观测工作中的同相电压&#xff0b;点电压即可。 观测虚拟短路的点时&#xff0c;掌握工作中的诸条件&#xff0c;例如电源电压或周围温度的变化、负载的变动、对各种输入信号OP放大器及周边电路是否正常工作等&#xff0c;就可以得到很好的线索。转载于:https:…