分享

H5:画布Canvas基础知识讲解(一)之插入图像、像素级操作、文字

 zhulin1028 2022-04-27

上一节介绍了H5:画布Canvas基础知识讲解(一)之canvas基础、2D context API、路径,接下来继续讲解H5:画布Canvas基础。

插入图像

drawImage方法允许在Canvas中插入其他图像(img和Canvas元素) 。在Opera中可以在Canvas中绘制SVG图形。此方法比较复杂,可以有3个、5个或9个参数:

3个参数:最基本的drawImage使用方法。一个参数指定图像位置,另两个参数设置图像在Canvas中的位置。

5个参数:中级的drawImage使用方法,包括上面所述3个参数,加两个参数指明插入图像宽度和高度 (如果你想改变图像大小)。

9个参数:最复杂drawImage杂使用方法,包含上述5个参数外,另外4个参数设置源图像中的位置和高度宽度。这些参数允许你在显示图像前动态裁剪源图像。

下面是上述三个使用方法的例子:

	context.drawImage(img_elem, dx, dy);
	context.drawImage(img_elem, dx, dy, dw, dh);
	context.drawImage(img_elem, sx, sy, sw, sh, dx, dy, dw, dh);

可以把上面代码放置在文档head部分中,或者放在外部JavaScript文件中。

像素级操作

2D Context API提供了三个方法用于像素级操作:createImageData,getImageData和putImageData。

ImageData对象保存了图像像素值。每个对象有三个属性: width,height和data。data属性类型为CanvasPixelArray,用于储存width*height*4个像素值。每一个像素 有RGB值和透明度alpha值(其值为0至255,包括alpha在内。)。像素的顺序从左至右,从上到下,按行存储。

来看一个例子:

	var imgd = context.createImageData(50,50);
	var pix = imgd.data;
	for (var i = 0; n = pix.length, i < n; i += 4) {
	  pix[i  ] = 255;
	  pix[i+3] = 127;
	}
	context.putImageData(imgd, 0,0);

注意:不是所有浏览器都实现了createImageData。在支持的浏览器中,需要通过getImageData方法获取ImageData对象。

通过ImageData可以完成很多功能。如可以实现图像滤镜,或可以实现数学可视化 (如分形和其他特效)。来看一个实例:

	var imgd = context.getImageData(x, y width, height);
	var pix = imgd.data;
	for (var i = 0, n = pix.length; i < n; i += 4) {
	  pix[i  ] = 255 - pix[i  ];
	  pix[i+1] = 255 - pix[i+1];
	  pix[i+2] = 255 - pix[i+2];
	}
	context.putImageData(imgd,x, y);

可以把上面代码放置在文档head部分中,或者放在外部JavaScript文件中。

下一节继续讲H5:画布Canvas基础知识讲解(三)之文字、阴影、颜色渐变。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多