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 相关文章推荐
根据分辨率不同,调用不同的css文件
Aug 25 Javascript
jquery tab插件精简版分享
Sep 10 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
Feb 04 Javascript
jQuery中attr()方法用法实例
Jan 05 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
Sep 04 Javascript
超全面的JavaScript开发规范(推荐)
Jan 21 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
简单谈谈JS中的正则表达式
Sep 11 Javascript
webpack+vue2构建vue项目骨架的方法
Jan 09 Javascript
Express本地测试HTTPS的示例代码
Jun 06 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
May 31 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人民币金额数字转中文大写的函数代码
2013/02/27 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
python中Genarator函数用法分析
2015/04/08 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
软件测试企业面试试卷
2016/07/13 面试题
日语专业个人的求职信
2013/12/03 职场文书
《画风》教学反思
2014/04/16 职场文书
财务工作个人总结
2015/02/27 职场文书
学习与创新自我评价
2015/03/09 职场文书
《梅花魂》教学反思
2016/02/18 职场文书