文字粒子化(Canvas)

文字粒子化,额或者叫小圆圈化... 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title></title>
 6 </head>
 7 <body>
 8     <canvas id="particle" width="500" height="300"></canvas>
 9     <script type="text/javascript">
10         var canvas = document.getElementById("particle");
11         var ctx = canvas.getContext("2d");
12         var dots = [];//定义数组,用于存放后续的坐标(x,y)
13
14         function init() {
15             ctx.beginPath();
16             ctx.font = "80px Arial";
17             ctx.fillStyle = "rgba(0,0,0,1)";
18             ctx.fillText("Canvas",150,150);
19             ctx.fill();//画一个文字,颜色就随意,a值尽量高点
20             var img = ctx.getImageData(0, 0, canvas.width, canvas.height);//getImageData,专门用于获取图片数据,这里直接取了整个Canvas
21             ctx.clearRect(0, 0, canvas.width, canvas.height);//清空画布,就是把之前的文字清空,因为后面要以粒子(应该叫小圆圈)代替
22             for (var y = 0; y < img.height; y +=3) {//y+=3,是因为如果按像素取,有效值非常多,所以这里就每隔3像素取一点
23                 for (var x = 0; x < img.width; x +=3) {//y是高,x是宽
24                     var i = (x + y * img.width)*4;//这边就从左往右,从上往下;500X300的大小,会取166×100个像素点;×4则是因为rgba()
25                     var dot = {
26                         x: 0,
27                         y: 0
28                     };
29                     if (img.data[i + 3] >= 128) {//因为img.data中包含了每个像素点的rgba,+3表示取a的值
30                         dot.x = x;
31                         dot.y = y;
32                         dots.push(dot);//将每个满足条件的xy Add到dots数组中
33                     }
34
35                 }
36             }
37
38             for (var m = 0; m < dots.length; m ++) {//遍历数组,将每个数组的xy以圆的方式展出
39                 //document.write(dots[m].x + "&nbsp;" + dots[m].y + "</br>");//瞄一瞄每个坐标
40                 ctx.beginPath();
41                 ctx.arc(dots[m].x, dots[m].y, 1, 0, Math.PI * 2, true);
42                 ctx.fill();
43             }
44         }
45         window.onload = ("load", init(), true);
46     </script>
47 </body>
48 </html>
时间: 2024-10-08 08:13:50

文字粒子化(Canvas)的相关文章

文字粒子化

事情没有想象中那么难--JX官网首页3D粒子效果 随便谈谈用canvas来实现文字图片粒子化

Canvas实现文字粒子化,并且绕轴旋转(完善)

1. 之前有放过一个初始版本,但是因为在旋转的时候,有比较大的瑕疵,造成每个点运动到端点后,出现类似撞击的感觉. 2. 所以本文对旋转作了些调整,运用类似水平方向的圆周运动 a. HTML代码,定义canvas标签 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content

谈谈文字图片粒子化

之前写了谈谈文字图片像素化,主要是为了将文字和图片像素化后的坐标提取出来,而本篇所讲即为像素化后的粒子化过程. 先上一个简单的demo -> 粒子化demo,本篇的目的就是为了讲解怎样做这样的简单demo(大牛请无视):同时会介绍一些优秀的demo供大家参考. 主要思路 首先我们谈谈粒子化的主要思路. 像素化后(不知道怎样像素化,参考谈谈文字图片像素化),我们得到了所需图像或者文字的具体坐标,我们将它们形象地用一个个的粒子表示(这里用了圆形),得到的坐标即是粒子的最终位置.粒子的初始位置在哪里?

文字图片化

RT,实现类似现在网上流行的长微博生成器,就是把长文字转成图片.当然功能比不上网上流传的,不知道网上那些用的什么方法.我这是用的HTML5的Canvas特性,也算一种实现吧.     示例地址: TextToImage,仅作大家交流使用. 附加_2012年4月18日11:13:00:之前刚分享此代码的时候的版本是不能处理分行的,现在可以了.在做断行的过程,我发现:一个好算法,是胜过无数行苦逼的杂乱代码的... 标签: <无> 代码片段(2)[全屏查看所有代码] 1. [图片] QQ截图2012

canvas粒子文字动画教程

1,什么是canvas粒子动画 canvas粒子文字动画效果绚丽,实现的方法和难点主要是根据缓动函数来确定粒子的轨迹. 2.主要实现步骤 创建一个canvas,在canva上绘制文字或图片,然后获取像素的信息并生成一个粒子数组 var imageData = ctx.getImageData(0,0,canvas.width,canvas.height); ... var dotList = []; for(var x=0; x<imageData.width; x+=mass) { for(v

canvas粒子文字渐进渐出效果

之前一直想做一个文字粒子效果的淡出淡进,这两天事情就写了一下代码,效果地址:http://www.mjix.com/code/canvas-text/   ,按F11进入全屏,做屏保还可以,预览图 主要是在粒子(文字像素点)的位移问题上的处理方法.淡进前需要先获取到像素点的初始位置极其透明度,这个东东运用到数学左边换算问题,要遇到数学有点头大就跳过吧,我学数学的/偷笑 1 //获取渐进前的像素点位置 2 getInData : function(data, min, offset){ 3 var

html5 canvas 粒子特效

不知不觉就已经好久没写过博客了,自从七月正式毕业后,离开了实习了将近九个月的老东家,进了鼠厂后,做的事都是比较传统的前端活,之前在tpy的时候只管做移动h5的特效以及小游戏,再加上实习所以时间比较充裕,canvas玩的比较多,而现在因为工作都是些传统前端工作,而且也忙,就基本上没再写过canvas相关的效果了.这个博客自己只是想分享一些自己做过的一些好玩的demo,所以正经的那些项目心得.插件什么的就基本上都不会放上来了. 刚好昨天的时候闲了下来,就看了一下以前写的一些玩意,所以又想折腾下以前很

canvas学习之粒子动画

项目地址:http://pan.baidu.com/s/1ccTptc 粒子动画意思就是把一个图片粒子画,然后使用粒子作出动画效果,主要两个问题:一个图片如何粒子化,这里面我们使用canvas的getImageData(http://web.jobbole.com/87602/),还有一个是作出轨迹,让粒子按照既定轨迹来运行,我们使用tweet.js(http://www.zhangxinxu.com/study/201612/how-to-use-tween-js.html,) 下载项目后,执

HDU 1736 美观化文字

美观化文字 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4009    Accepted Submission(s): 881 Problem Description 请看下面两段文字: Kenny喊道:"我来了!" Kenny喊道:“我来了!” 前面一段文字中由于在中文中使用了英文标点,显得不太美观.本题中你的任务是让任意