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 相关文章推荐
兼容FireFox 的 js 日历 支持时间的获取
Mar 04 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
jquery移动端TAB触屏切换实现效果
Dec 22 Javascript
Javascript 跨域知识详细介绍
Oct 30 Javascript
用headjs来管理和加载js 提高网站加载速度
Nov 29 Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
js编写简单的计时器功能
Jul 15 Javascript
react-navigation之动态修改title的内容
Sep 26 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
Nov 30 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
May 13 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 Javascript
vue实现侧边栏导航效果
Oct 21 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
php实现zip文件解压操作
2015/11/03 PHP
Prototype Template对象 学习
2009/07/19 Javascript
js中将具有数字属性名的对象转换为数组
2011/03/06 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
js new Date()实例测试
2019/10/31 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
python循环输出三角形图案的例子
2019/11/22 Python
python 多进程队列数据处理详解
2019/12/23 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
如何通过python检查文件是否被占用
2020/12/18 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
摄影实习自我鉴定
2013/09/20 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
个人职业及收入证明
2014/10/13 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
《所见》教学反思
2016/02/23 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
mysql查询结果实现多列拼接查询
2022/04/03 MySQL
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android