红包照片模糊效果

简介:

效果图

wKiom1iFb02xutfCAAKlKNqEGVM496.png-wh_50

wKiom1iFb1Xy6qmTAAZ3eznno4g526.png-wh_50

wKioL1iFb1WjjCnUAALWpVamK3s630.png-wh_50

html结构(index.html)

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<title>红包照片</title>

<link rel="stylesheet" href="blur.css">

<script src="jquery-3.1.1.min.js" type="text/javascript" charset="utf-8"></script>

</head>

<body>

<div id="blur-div">

<img id="blur-image" src="20170122161717.png" alt="">

<canvas id="blur-canvas"></canvas>


<a href="javascript:reset()" class="button" id="reset-button">reset</a>

<a href="javascript:show()" class="button" id="show-button">show</a>

</div>

<script src="blur.js" type="text/javascript" charset="utf-8" ></script>

</body>

</html>

css样式(blur.css)

#blur-div{

width: 600px;

height: 450px;

margin: 0 auto;

position: relative;

}



#blur-image{

display: block;

width: 600px;

height: 450px;

margin: 0 auto;


filter:blur(20px);

-webkit-filter:blur(20px);

-moz-filter:blur(20px);

-ms-filter:blur(20px);

-o-filter:blur(20px);


position: absolute;

left: 0px;

top: 0px;

z-index: 0;

}



#blur-canvas{

display: block;

margin: 0 auto;

position: absolute;

left: 0px;

top: 0px;

z-index: 100;

}


.button{

display: block;

position: absolute;

z-index: 200;

width: 100px;

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;

}

js脚本(blur.js)

var canvasWidth = 600;

var canvasHeight = 450;


var canvasObj = document.getElementById("blur-canvas");


var contextObj = canvasObj.getContext("2d");


canvasObj.width = canvasWidth;

canvasObj.height = canvasHeight;


var imageObj = new Image();

var radius = 50;

var clippingRegion = {x:200,y:100,r:radius}


imageObj.src = "20170122161717.png";

imageObj.onload = function(e){

initCanvas();

}



function initCanvas(){

var rx = Math.random()*(canvasObj.width - 2*radius)+radius;

var ry = Math.random()*(canvasObj.height - 2*radius)+radius;

clippingRegion = {x:rx,y:ry,r:radius};

drawImage(imageObj,clippingRegion);

}



function drawImage(imageObj,clippingRegion){

contextObj.clearRect(0,0,canvasObj.width,canvasObj.height);


contextObj.save();

setClippingRegion(clippingRegion);

contextObj.drawImage(imageObj,0,0);

contextObj.restore();

}



function setClippingRegion(clippingRegion){

contextObj.beginPath();

contextObj.arc(clippingRegion.x,clippingRegion.y,clippingRegion.r,0,Math.PI*2,false);

contextObj.clip();

}



function reset(){

initCanvas();

}



function show(){

document.getElementById("reset-button").style.display="none";

var animation = setInterval(function(){

clippingRegion.r += 20;

if (clippingRegion.r > 2*Math.max(canvasObj.width,canvasObj.height)) {

clearInterval(animation);

document.getElementById("reset-button").style.display="block";

}

drawImage(imageObj,clippingRegion);

},30);

}


本文转自  素颜猪  51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1893829
相关文章
聊聊自动化测试的度量指标
在聊自动化测试度量指标前,有必要回到做自动化的初衷上,就是为什么要做自动化测试,要解决什么问题。
|
缓存 关系型数据库 MySQL
如何优化MySQL 8.0的性能?
【6月更文挑战第14天】如何优化MySQL 8.0的性能?
1782 5
|
存储 监控 安全
详解:MySQL自增ID与UUID的优缺点及选择建议,MySQL有序uuid与自定义函数实现
详解:MySQL自增ID与UUID的优缺点及选择建议,MySQL有序uuid与自定义函数实现
5079 0
|
机器学习/深度学习 算法 TensorFlow
Tf.keras 实现线性回归 | 学习笔记
快速学习 Tf.keras 实现线性回归
Tf.keras 实现线性回归 | 学习笔记
|
开发者
分类控件|学习笔记
快速学习分类控件
分类控件|学习笔记
|
1天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
248 116
|
16天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~