看到微信红包照片,以及慕课网制作红包照片的启发特意用原生js写了个红包照片组件

效果图

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"><title>模仿微信红包图片</title>
</head>
<style>body{margin:0;}.img-box{margin:50px auto 0;position:relative;}.img-box>img{width:100%;position:relative;z-index:1;filter: blur(20px);-webkit-filter: blur(20px);-ms-filter: blur(20px);-0-filter: blur(20px);}.img-box>canvas{position:absolute;top:0;left:0;z-index:100;}.img-box>div{width:5em;height:2em;line-height:2em;text-align:center;margin:0 auto;background-color:#00CC99;color:#fff;}.img-box>div:hover{background-color:#009999;cursor:pointer;}
</style>
<body><div class="img-box"><img src="pb2.jpg" alt=""><canvas></canvas><div>显示全部</div></div><div class="img-box"><img src="pb2.jpg" alt=""><canvas></canvas><div>显示全部</div></div>
</body>
<script src="pictureblur.js"></script>
<script>
picBlur.init(".img-box");
</script>

pictureblur.js

(function(){
var picblur = function(){}
picblur.prototype.init = function(selector){
this.is_first = true;
var picblur=this;
var imgbox = document.querySelectorAll(selector);
var win_width = document.body.offsetWidth;
doFn(imgbox,function(imgb){
imgb.style.width=win_width>650?"650px":win_width+"px";
});
doFn(getDom(imgbox,"CANVAS"),function(canvas){    //canvas高宽设置
var clipRegion = getRandowRegion(canvas);
var img = getDom(canvas.parentNode,"IMG")[0];
canvas.setAttribute("data-region",JSON.stringify(clipRegion));
canvas.height=img.width/img.naturalWidth*img.naturalHeight;
canvas.width=img.width;
drawImg.call(picblur,canvas,clipRegion);
});
doFn(getDom(imgbox,"DIV"),function(div){    //绑定点击事件
div.addEventListener("click",showAll,false);
});
}
function showAll(){     //显示全图
doFn(getDom(this.parentNode,"CANVAS"),function(canvas){
var clipRegion=JSON.parse(canvas.getAttribute("data-region"));
this.style.visibility="hidden";
var showall = setInterval(function(){
clipRegion.r+=15;
drawImg(canvas,clipRegion);
if(clipRegion.r>canvas.width&&clipRegion.r>canvas.height){
clearInterval(showall);
}
}.bind(this),30);
}.bind(this));
}
function drawImg(canvas,clipRegion){        //画出圆形清晰区域
var context = canvas.getContext("2d");
var img = getDom(canvas.parentNode,"IMG")[0];
img.onload = toDraw;
toDraw();
function toDraw(){
context.clearRect(0,0,canvas.width,canvas.height);
context.save();
context.beginPath();
context.arc(clipRegion.x,clipRegion.y,clipRegion.r,0,2*Math.PI,false);
context.clip();
context.drawImage(img,0,0,canvas.width,canvas.height);
context.restore();
}
}
function getRandowRegion(canvas){   //随机区域
var rand = {x:0,y:0,r:40}
rand.x = Math.random()*(canvas.width-rand.r*2)+rand.r;
rand.y = Math.random()*(canvas.height-rand.r*2)+rand.r;
return rand;
}
function getDom(dom_parent,tagname){    //根据tagname获取dom节点
var dom=[];
if(dom_parent.length){   //判断传入是dom节点还是dom数组
for(var i in dom_parent){
for(var n in dom_parent[i].childNodes){
if(dom_parent[i].childNodes[n].tagName==tagname){
dom.push(dom_parent[i].childNodes[n]);
}else{
continue;
}
}
}
}else{
for(var n in dom_parent.childNodes){
if(dom_parent.childNodes[n].tagName==tagname){
dom.push(dom_parent.childNodes[n]);
}else{
continue;
}
}
}
return dom;
}
function doFn(elem,fn){  //给元素绑定函数
if(elem instanceof Object){
for(var i=0;i<elem.length;i++){
fn(elem[i]);
}
}else{
fn(elem);
}
}
return picBlur = new picblur;
}())

模仿微信红包模糊照片相关推荐

  1. Canvas模仿微信红包照片

    1.最终效果: 2.实现过程: 1.将图片加载出来,并加上模糊效果: index.html: <!DOCTYPE html> <html> <head lang=&quo ...

  2. Android控件之 证件照控件 包含模仿微信朋友圈照片浏览

    本次带来的是一个证件照控件 功能:可以自定义证件照存储路径.压缩大小.水印文字.水印颜色.水印大小 certificateview 使用说明: 将其添加到存储库末尾的根的build.gradle中: ...

  3. Canvas实现微信红包照片效果

    本篇文章来源慕课网课程<canvas玩转红包照片>,用canvas及css3结合,实现红包照片的效果,并不做支付过程,代替的是使用2个按钮,显示清晰图片和重置圆圈可见区域.未做移动的屏幕适 ...

  4. 如何获取微信红包照片的原始清晰图片

    2016-02-07,腾讯再次开通了朋友圈的微信红包功能,我的朋友圈着实被目不暇接的高糊照片刷了一把屏.在这里记录一下查看清晰图片的方法. 首先,需要抓取红包照片的地址.怎么抓取?请看传送门:http ...

  5. Java小游戏:模仿微信群发红包

    Java小游戏:模仿微信群发红包 微信群主发普通红包,普通红包规则: 群主的一笔金额,从群主余额中扣除,平均分成n等分,让群员领取. 成员领取红包后,保存到余额中. 请根据规则,完成案例中所有类的定义 ...

  6. 微信红包照片来了,用变色龙隐形二维码赚点零花钱

    在微信支付已经日趋成熟化的今天,红包已经不仅仅是逢年过节时才有,有了微信,随时随地都可以收发红包."今天你收到红包了吗?"已经成为很多人的日常问候.但单纯的抢红包.直接收发红包又或 ...

  7. 产品也要看气质 ——从支付宝新春送福和微信红包照片说起

    2016年春节还未到,但从1月底已经能感受浓浓的年味了,这当然少不了互联网的推波助澜,首当其冲的莫过于各家花样百出的红包大战.说到红包,就不得不提2家巨头的代表产品,支付宝和微信(不知曾几何时,我们越 ...

  8. 支付宝微信红包战背后的算盘

    五福卡斗毛玻璃照:支付宝微信红包战背后的算盘(转) 来源:2016年02月03日 每日经济新闻 ◎每经记者 蒋佩芳 植根中国的互联网公司越来越接地气,中国文化独有的春节红包正被支付宝和微信整合成社交和 ...

  9. 微信“红包封面”终于开放:这样免费定制!

    微信红包个人可以免费定制了,下面给大家说说教程,在上周该功能上线一段时间后又紧急关闭了,现在重新开放了. 这次是通过网页的方式定制而不是小程序了,给大家说说方法,需要将微信更新到最新版本,创建视频号, ...

最新文章

  1. socket的accept函数解析以及服务器和多个客户端的端口问题
  2. 第12章 存储器的保护
  3. 不仅有骁龙8 Plus!摩托罗拉新旗舰还要抢首发2亿像素
  4. css 毛玻璃_css揭秘-视觉效果
  5. Android设备新型恶意软件,融合银行木马、键盘记录器和移动勒索软件等功能
  6. cocos2d-x学习(一) HelloWorld
  7. .net excel循环插数据_[PaperReading]MEMC-Net 运动估计和运动补偿网络
  8. awesomes前端资源库网站
  9. word脚注、尾注小技巧|怎么删除尾注的横线|怎么快速删除页眉的横线|怎么快速将尾注和脚注转为带方括号的格式
  10. C#技术交流④群正式开建,诚邀各路大佬莅临指导
  11. 拉里·埃里森亲自支招,数据库自动化之后,DBA何去何从???
  12. 完整PLC smart200伺服液压PID一套程序
  13. pytorch神经网络实现
  14. Django框架项目之支付功能——支付宝支付
  15. 学生学籍信息管理系统设计c语言,c语言学籍信息管理系统设计
  16. Python 还原: 网红放置类游戏Cookie Clicker
  17. 参加量子位和中关村一号联合举办的AI+智慧城市发展趋势和挑战沙龙 之 北京篇
  18. CentOS 7 安装Mplayer视频播放器
  19. 初试 RabbitMQ采坑记录:org.springframework.amqp.AmqpIOException: java.io.IOException
  20. 苹果手机录屏软件_手机录屏哪个软件好用?

热门文章

  1. 自定义字段的设计与实现(Java实用版)
  2. JavaScript简餐——细看函数的参数
  3. 超详细!万象奥科亲测8款不同品牌TF卡性能测试
  4. IDataSet接口的使用和矢量图层复制
  5. nacos配置mysql链接
  6. 六月组队学习总结-图神经网络
  7. python中plot是什么意思_在matplotlib的plot函数中'o'是什么意思?
  8. 无头单链表删除所有值为e的节点(递归算法)(四)-----考研数据结构题笔记
  9. Blazor组件自做四 : 使用JS隔离封装signature_pad签名组件
  10. 【物联网】物联网时代,传统企业终会夺回自己的天下!