只要三步,使用html5+js实现像素风头像生成器
html5的画布给我们带来了很大的空间,其实像素风格头像生成器只是用到了画方块的
方法。画一个像素头像,只要三步,1、解决像素点,2、解决像素点之间的关系,3、一次
次地画像素点。
先画个方块
其实在canvas上画方块非常简单,只要通过js在页面上取得一个画布,然后再生成上|上海巴士股份
下文,再定义画笔,然后再往上画就好了。
比如:
<canvas id=mycanvas width=100 height=100 style=border:1px solid #d3d3d3;>
your browser does not support the html5 canvas tag.
<canvas>
上面在html里面定义好了一个画布,然后用js取到这个画布对象。
var c=mentbyid(mycanvas);
取到上下文,并且设置一些参数,画下第一笔:一个小方块:
var ctx=text(2d);
把画笔定义成绿色,
yle=green;
在(40,0) 这个 地方 画下 长为10,宽也为10 的一个实心矩形
ct(40,0,10,10);
到这里,基础的东西都有了,可以画一个矩形了之后,要画一个头像,就只是用一些方
块做为头像的像素点,就可以了,然后加入循环,在不同的地方画下相同颜色,相同大小的
方块,就可以是一个头像了。
头像,是要左右对称的。
这个也很简单可以实现,比如我要在一块 100*100 的画布上 画一些像素点为 5px大
小的 方块的时候, 如果在左边(5,0) 的地方画了一个方块的话,与之对称的右边的坐
标是: (100-5)-5px。把这个抽象成一个函数留作后用:
从一个点a 拿到对称点
带入imgwidth 与 pensize
100 2=50
function getsymmetry (a, imgwidth, pensize) {
return imgwidth -a - pensize;
}
然后呢,从左到右画方块的话,最多画多少次呢? 比如 100 的画布,5px 大小的方块
的话,只要左边画最多10次就可以了,当然,是不能全部都给画了,那样子又全部把画布
给染了一遍色,很明显,这样子是不对的,所以呢,是需要一个生成比指定值小的随机整数
值的一个函数:
返回指定范围以内的整数 传入3返回 132
function getremodint(alt) {
return (() * alt) + 1;
}
到这里,有了对称点,有了在左边画多少次这个条件,还可以拿对称点之后,是可以画
一行的方块了的:
(function(rmd){
(rmd);
for (var i=0; i < rmd; i++) {
var x1=getremodintbypensize(imgwidth 2, pensize);
(x1);
var x2=getsymmetry(x1, imgwidth, pensize);
ct(x1, yl, pensize, pensize);
ct(x2, yl, pensize, pensize);
}
})(getremodint(imgwidth pensize 2));
银行汇率、外汇汇率
上面代码里面的getremodintbypensize这个函数是为了生成一个坐标点,能被画笔大小
(方块大小)整除的,因为既然一个方块做为一个像素点,是不能出现画了半个像素点这种
情况出现的。这个函数具体实现为:
function getremodintbypensize (alt, pensize) {
var rmd=0;
while (true) {
rmd=(() * alt);
if (rmd % pensize===0) {
return rmd
}
}
}
一行一行地画,画着画着就画完了。
画了一行之后,再画一行就不是什么难事了,画很多行也是可以的,基于刚才提到的像
素点的原因,做循环时递增值应为画笔的大小。所以只要把上面画一行的代码用一个for包
起来就 ok 了:
for (var yl=0; yl <=imgwidth; yl +=pensize) {
(function(rmd){
(rmd);
for (var i=0; i < rmd; i++) {
var x1=getremodintbypensize(imgwidth 2, pensize);
(x1);
var x2=getsymmetry(x1, imgwidth, pensize);
ct(x1, yl, |黄金跌价pensize, pensize);
ct(x2, yl, pensize, pensize);
}
})(getremodint(imgwidth pensize 2));
}
到这里,基本上一个头像是可以画了的。
完整的html在这里,
ie不能直接把画出来的东西直接另存为,所以加了把当前画布上的内容转为base64的
格式,然后给一个&银行汇率、外汇汇率
lt;img>的src,这样子,就可以在ie下另存了。
完整的html 里面还加入了 上一个头像 的功能,人嘛,总有一种站在这山看那山高的
心态的,所以作为一个好心的序员,提供一个“ctrl+z”还是极好的。
完整的html 是可以自定义头像大小与画笔大小的哦。
就这样吧,这里正好是100行。
2021年4月28日发(作者:福田汽车(600166)福田汽车)每日80000+条信息更新,多维度检索、企业资质匹配、甲方监控等功能,让中标快人一步!招标投标企业报告北京天顺合力科技有限公司本报告于?2019年9月24日?生成17银行汇率、...
京沪高铁上市是真的嘛?什么时候上市?上市后发行价多少钱一股 听说是要上市,具体时间,证监会才知道。 京沪高铁上市预计可升到多少钱价位? 京沪高铁上市遇即可升到大约是500多块钱的价位。 我能买京沪高铁股票吗 你好,根据京沪高...
2021年4月26日发(作者:雨虹(002271)雨虹)中国人民财产保险股份有限公司 外来原始发票的真伪鉴别审核管理暂行办法 第一条 为提高会计基础工作质量,防范财务风险,根据《中华人民共和国发票管理办法》、公司《会计制度》和《会计基础工...
银行汇率、外汇汇率2021年4月26日发(作者:京对强力新材的知识产权管理情况做了总体介绍,知识产权)真皮皮衣该如何保养 皮衣的材料基本都源自动物毛皮,正是因为如此,如果保养不好就会导致衣服发霉,或者变质。皮衣变质就会导致整件皮...
2021年4月26日发(作者:泪眼婆娑……不为康得新,为大A!有朋友今天亏损15%,太正常)XX项目安全生产策划书 金枫酒业投资分析 一、金枫酒业基本情况: 主营业务:黄酒生产经营、食品、副食品、食糖生产和销售等 主营业务区域:上海、广西...
风帆股份股吧2021年4月27日发(中航地产股票作者:汉得信息(300170)汉得信息)3. 页标题的容和文章的页脚已经在开始的时候被换掉了。 4. 文章的排版也已经修正过了。 5. 如果必要,不同的字体已经被忽略了。大部分地方,这片文档能...