您的位置:首页 > Web前端

[前端] canvas进阶之绘制彩色图像

2015-10-12 11:14 387 查看
本章主要介绍使用canvas来绘制彩色图像

HTML布局:

<canvas id="canvas" style="display:block;margin:0 auto;border:1px solid #aaa;">
您的浏览器尚不支持canvas
</canvas>


JS脚本:

<script>
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

window.onload = function(){

canvas.width = 800;
canvas.height = 800;

var imageData = context.createImageData( canvas.width , canvas.height );
var pixelData = imageData.data;

for( var i = 0 ; i < canvas.height ; i ++ )
for( var j = 0 ; j < canvas.width ; j ++ ){

var p = i*canvas.width+j;

pixelData[4*p+0] = parseInt(Math.pow(Math.cos(Math.atan2(j-400,i-400)/2),2)*255);
pixelData[4*p+1] = parseInt(Math.pow(Math.cos(Math.atan2(j-400,i-400)/2-2*Math.acos(-1)/3),2)*255);
pixelData[4*p+2] = parseInt(Math.pow(Math.cos(Math.atan2(j-400,i-400)/2+2*Math.acos(-1)/3),2)*255);
pixelData[4*p+3] = 255;
}

context.putImageData( imageData , 0 , 0 , 0 , 0 , canvas.width , canvas.height );
}
</script>


效果:



知识点:

1、createImageData(width, height, imageData) 方法参数详解

参数描述
widthImageData 对象的宽度,以像素计。
heightImageData 对象的高度,以像素计。
imageData另一个 ImageData 对象。
下面来看下imageData对象的data属性

var imageData = context.createImageData( canvas.width , canvas.height );
var pixelData = imageData.data;


imageData.data获取图像像素的相关信息,具体如图:



2、putImageData(imgData, x, y, dirtyX, dirtyY, dirtyWidth, dirtyHeight) 方法参数详解

参数描述
imgData规定要放回画布的 ImageData 对象。
xImageData 对象左上角的 x 坐标,以像素计。
yImageData 对象左上角的 y 坐标,以像素计。
dirtyX可选。水平值(x),以像素计,在画布上放置图像的位置。
dirtyY可选。水平值(y),以像素计,在画布上放置图像的位置。
dirtyWidth可选。在画布上绘制图像所使用的宽度。
dirtyHeight可选。在画布上绘制图像所使用的高度。
图解:



3、pow() 函数方法可返回 x 的 y 次幂的值

参数描述
x必需。底数。必须是数字。
y必需。幂数。必须是数字。
例: pow(2, 4) 为 16

4、acos() 方法可返回一个数的反余弦

参数描述
x必需。必须是 -1.0 ~ 1.0 之间的数。
例:Math.acos(0.64) 为 0.8762980611683406

谢谢关注!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  canvas