canvas红包照片实例分享


Posted in Javascript onFebruary 28, 2017

效果:

点击RESET:随机显示剪辑区域;

点击SHOW:显示完整清晰图片;

canvas红包照片实例分享

图(1)点击RESET

canvas红包照片实例分享

图(2)点击SHOW

代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>canvas红包照片</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<style type="text/css">
 #blur_div{
 width: 500px;
 height: 334px;
 margin: 0 auto;
 position: relative;
 margin-top:100px;
 }
 #blur_img{
 display: block;
 width: 500px;
 height: 334px;
 margin: 0 auto;
 filter: blur(15px);/*CSS3模糊*/
 -webkit-filter: blur(15px);
 -moz-filter: blur(15px);
 -ms-filter: blur(15px);
 -o-filter: blur(15px);
 position:absolute;
 left: 0px;
 top: 0px;
 z-index: 0;
 }
 #canvas{
 display: block;
 margin: 0 auto;
 position:absolute;
 left: 0px;
 top: 0px;
 z-index: 100;
/* background-color:red;*/
 }
 .button{
 display:block;
 position:absolute;
 z-index:200;
 width:80px;
 height:30px;
 color:white;
 text-decoration:none;
 text-align:center;
 line-height:30px;
 border-radius:5px;
 }
 #reset_button{
 left:100px;
 bottom:20px;
 background-color:#058;
 }
 #reset_button:hover{
 background-color:#047;
 }
 #show_button{
 right:100px;
 bottom:20px;
 background-color:#085;
 }
 #show_button:hover{
 background-color:#074;
 }
</style>
</head>
<body>
 <div id="blur_div">
 <img id="blur_img" src="http://cdn.attach.qdfuns.com/notes/pics/201702/27/221935e35ugwllljg10912.jpg" />
  <canvas id="canvas"></canvas>
  <a href="javascript:reset()" rel="external nofollow" class="button" id="reset_button">RESET</a>
  <a href="javascript:show()" rel="external nofollow" class="button" id="show_button">SHOW</a>
  </div>
 <script>
   var canvasWidth = 500;
 var canvasHeight = 334;
 var canvas = document.getElementById("canvas");
 var context = canvas.getContext("2d");
 canvas.width = canvasWidth;
 canvas.height = canvasHeight;
 /*在canvas上绘制清晰的图片*/
 var image = new Image();
 var radius = 40;
 var clippingRegion = {x:-1,y:-1,r:radius};/*初始化剪辑区域*/
 image.src = "http://cdn.attach.qdfuns.com/notes/pics/201702/27/221935e35ugwllljg10912.jpg";
 image.onload = function(e){
  initCanvas();
 }
 function initCanvas(){
  clippingRegion = {x:Math.random()*(canvas.width-2*radius)+radius,
     y:Math.random()*(canvas.height-2*radius)+radius,
     r:radius};/*随机剪辑区域*/
  draw(image,clippingRegion);
 }
 function setClippingRegion(clippingRegion){
  context.beginPath();
  context.arc(clippingRegion.x,clippingRegion.y,clippingRegion.r,0,2*Math.PI,false);/*绘制剪辑区域的路径*/
  context.clip();
 }
 function draw(image,clippingRegion){
  context.clearRect(0,0,canvas.width,canvas.height);/*清除画布*/
  context.save();
  setClippingRegion(clippingRegion);/*重新设置剪辑区域*/
  context.drawImage(image,0,0);
  context.restore();
 }
 /*重置显示剪辑区域*/
 function reset(){
  initCanvas();
 }
 /*显示整个清晰图片*/
 function show(){
  var theAnimation = setInterval( 
  function(){
   clippingRegion.r += 20; 
   if(clippingRegion.r>2*Math.max(canvas.width,canvas.height)){
   clearInterval(theAnimation);
   }
   draw(image,clippingRegion);
  },20)
 }  
  </script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Javascript 按位左移运算符使用介绍(
Feb 04 Javascript
Javascript控制div属性动态变化实例分析
Oct 08 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
Nov 13 Javascript
Node.js实现数据推送
Apr 14 Javascript
JS把内容动态插入到DIV的实现方法
Jul 19 Javascript
vue2.0获取自定义属性的值
Mar 28 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
利用node实现一个批量重命名文件的函数
Dec 21 Javascript
jquery实现有过渡效果的tab切换
Jul 17 jQuery
webpack+vue-cil 中proxyTable配置接口地址代理操作
Jul 18 Javascript
快速解决element的autofocus失效问题
Sep 08 Javascript
详解本地Node.js服务器作为api服务器的解决办法
Feb 28 #Javascript
jquery操作select取值赋值与设置选中实例
Feb 28 #Javascript
JS使用面向对象技术实现的tab选项卡效果示例
Feb 28 #Javascript
基于cookie实现zTree树刷新后展开状态不变
Feb 28 #Javascript
js中Number数字数值运算后值不对的解决方法
Feb 28 #Javascript
canvas绘图不清晰的解决方案
Feb 28 #Javascript
jQuery树控件zTree使用方法详解(一)
Feb 28 #Javascript
You might like
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
用js实现trim()的解决办法
2013/04/16 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
python实现Excel文件转换为TXT文件
2019/04/28 Python
Django 反向生成url实例详解
2019/07/30 Python
python @classmethod 的使用场合详解
2019/08/23 Python
详解Anaconda 的安装教程
2020/09/23 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
员工离职感谢信
2015/01/22 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python