这篇文章给大家分享的是有关帆布如何处理图片的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
画布,中文译为“画布”,HTML5中新增了& lt; canvas>元素,可以结合JavaScript动态地在画布中绘制图形。
大概流程非常简单,主要分为以下三个步骤:
是的,就像把大象装进冰箱一样简单,哈哈。
<强>一,主要API 强>
整个流程中所用到的主要画布API有:
- <李>
绘制图像:drawImage ()
李> <李>获取图像数据:getImageData ()
李> <李>重写图像数据:putImageData ()
李> <李>导出图像:toDataURL ()
李><强> 1。drawImage() 强>
顾名思义,该方法就是用于将图像绘制于帆布画布当中,具体用法有三种:
①在画布上定位图像:context.drawImage (img, x, y)
②在画布上定位图像,并规定图像的宽度和高度:context.drawImage (img, x, y,宽度、高度)
③剪切图像,并在画布上定位被剪切的部分:context.drawImage (img, sx, sy,向下,sheight, x, y,宽度、高度)
以上参数值描述如下表:
参数描述img规定要使用的图像,画布或视频.sx可选。开始剪切的x坐标位置.sy可选。开始剪切的y坐标位置.swidth可选。被剪切图像的宽度.sheight可选。被剪切图像的高度方式来在画布上放置图像的x坐标位置.y在画布上放置图像的y坐标位置.width可选。要使用的图像的宽度。(伸展或缩小图像)高度可选。要使用的图像的高度。(伸展或缩小图像)<强> 2。getImageData() 强>
该方法用于从帆布画布中获取图像数据,具体用法如下:
获取画布指定矩形范围内的像素数据:var ImageData=https://www.yisu.com/zixun/context.getImageData (x, y,宽度、高度)
以上参数值描述如下表:
该方法会返回一个ImageData对象,该对象有三个属性分别为:宽度、高度和数据,而我们最主要用到的就是这数个数据组,因为它保存着图像中每一个像素的数据。有了这些数据之后我们便可以对它们进行处理,最后再将其重写至画布画布中,这样就实现了对图片的处理转换。对于该数据数组具体用法,我们可以在后面的实例中看到。
<强> 3。putImageData() 强>
该方法很简单,就是用于将图像数据重写至画布画布中,具体用法如下:
context.putImageData (imgData, x, y, dirtyX、dirtyY dirtyWidth, dirtyHeight)
以上参数值描述如下表:
参数描述imgData规定要放回画布的ImageData对象.xImageData对象左上角的x坐标,以像素计.yImageData对象左上角的y坐标,以像素计.dirtyX可选。水平值(x),以像素计,在画布上放置图像的位置.dirtyY可选。水平值(y),以像素计,在画布上放置图像的位置.dirtyWidth可选。在画布上绘制图像所使用的宽度.dirtyHeight可选。在画布上绘制图像所使用的高度。<强> 4。toDataURL() 强>
这个方法与以上三种方法不同,它是帆布对象的方法,该方法返回的是一个包含数据URI的字符串,该字符串可直接作为图片路径地址填入& lt; img>标签的src属性当中,具体用法如下:
var dataURL =, canvas.toDataURL(类型,encoderOptions);
以上参数值描述如下表:
参数描述类型可选。图片格式,默认为图像/png.encoderOptions可选。在指定图片格式为图像/jpeg或图像/webp的情况下,可以从0到1的区间内选择图片的质量。如果超出取值范围,将会使用默认值0.92。其他参数会被忽略。<强>二,图片处理实例强>
本实例将通过代码简单介绍如何把彩色图片处理成黑白图片。
& lt; !——HTML比; & lt; canvas id=癱anvas",宽度=?00“,身高=?00“祝辞& lt;/canvas> & lt; input id=癶andle",类型=癰utton",价值=https://www.yisu.com/zixun/贝硗计?/> <输入id="创建" type="按钮" value="生成图片"/>
//JavaScript 时间=window.onload 函数(){ ,,,var canvas =, . getelementbyid (“canvas"),,,,//获取帆布画布对象 ,,,,,,,context =, canvas.getContext (& # 39; 2 d # 39;);,,//获2 d上取下文对象,大多数Canvas API均为此对象方法 ,,,var image =, new 图像();,,//定义一个图片对象 ,,,image.src =, & # 39;一个/img.jpg& # 39;;,, ,,,image.onload =,函数(){//此才能处必须注意!后面所有操作均需在图片加载成功后执行,否则图片将处理无效 ,,,,,,,context.drawImage(形象,0,0),,,//将图片从帆布画布的左上角(0,0)位置开始绘制,大小默认为图片实际大小 ,,,,,,,var handle =, . getelementbyid (“handle"); ,,,,,,,var create =, . getelementbyid (“create"); ,,,,,,,handle.onclick =,函数(){//才能,单击”处理图片”按钮,处理图片 ,,,,,,,,,,,var imgData =, context.getImageData (0, 0, canvas.width canvas.height);,,,//获取图片数据对象 ,,,,,,,,,,,var data =, imgData.data;,,//获取图片数据数组,该数组中每个像素用4个元素来保存,分别表示红,绿,蓝和透明度值 ,,,,,,,,,,,var average =, 0; ,,,,,,,,,,,for (var 小姐:=,0;,小姐:& lt;, data.length;,我+=4),{ ,,,,,,,,,,,,,,,average =, Math.floor((数据[我]+ [i + 1] +数据[我+ 2])/3),,,//将红、绿、蓝色值求平均值后得到灰度值 ,,,,,,,,,,,,,,,(我)的数据,=,数据(i + 1),=,数据(+ 2),=,平均;,,将每个像素点的色值重写 ,,,,,,,,,,,} null null null null null null null null null null null null null帆布如何处理图片