运用Canvas处置图片的办法介绍-
Canvas,中文译为“画布”,HTML5中新增了
今天,我们不讲Canvas的图形绘制,而是讲怎样对图片进行处置。
大约流程非常简略,主要分为下列三个步骤:
以上参数值描述如下表:
参数 | 描述 |
---|---|
x | 开端复制的左上角位置的 x 坐标。 |
y | 开端复制的左上角位置的 y 坐标。 |
width | 将要复制的矩形区域的宽度。 |
height | 将要复制的矩形区域的高度。 |
该办法会返回一个ImageData对象,该对象有三个属性离别为:width、height和data,而我们最主要用到的就是这个data数组,由于它保留着图像中每一个像素的数据。有了这些数据之后我们便可以对它们进行处置,最后再将其重写至Canvas画布中,这样就实现了对图片的处置转换。关于该data数组概括用途,我们可以在背面的实例中看到。
3. putImageData()
该办法很简略,就是用于将图像数据重写至Canvas画布中,概括用途如下:
context.putImageData(imgData,x,y,dirtyX,dirtyY,dirtyWidth,dirtyHeight)
以上参数值描述如下表:
参数 | 描述 |
---|---|
imgData | 规定要放回画布的 ImageData 对象。 |
x | ImageData 对象左上角的 x 坐标,以像素计。 |
y | ImageData 对象左上角的 y 坐标,以像素计。 |
dirtyX | 可选。水平值(x),以像素计,在画布上放置图像的位置。 |
dirtyY | 可选。水平值(y),以像素计,在画布上放置图像的位置。 |
dirtyWidth | 可选。在画布上绘制图像所运用的宽度。 |
dirtyHeight | 可选。在画布上绘制图像所运用的高度。 |
4. toDataURL()
这个办法与以上三种办法不一样,它是Canvas对象的办法,该办法返回的是一个包括data URI的字符串,该字符串可直接作为图片途径地址填入标签的src属性傍边,概括用途如下:
var dataURL = canvas.toDataURL(type, encoderOptions);
以上参数值描述如下表:
参数 | 描述 |
---|---|
type | 可选。图片格局,默许为 image/png。 |
encoderOptions | 可选。在指定图片格局为 image/jpeg 或 image/webp的状况下,可以从 0 到 1 的区间内选中图片的质量。要是超出取值范畴,将会运用默许值 0.92。其他参数会被忽略。 |
二、图片处置实例
本实例将通过代码简略介绍怎样把彩色图片处置成黑白图片。
//JavaScript window.onload = function(){ var canvas = document.getElementById("canvas"), //猎取Canvas画布对象 context = canvas.getContext('2d'); //猎取2D高低文对象,大多数Canvas API均为此对象办法 var image = new Image(); //定义一个图片对象 image.src = 'imgs/img.jpg'; image.onload = function(){ //此处必需注意!背面所有操纵均需在图片加载成功后施行,不然图片将处置无效 context.drawImage(image,0,0); //将图片从Canvas画布的左上角(0,0)位置开端绘制,大小默许为图片现实大小 var handle = document.getElementById("handle"); var create = document.getElementById("create"); handle.onclick = function(){ // 单击“处置图片”按钮,处置图片 var imgData = context.getImageData(0,0,canvas.width,canvas.height); //猎取图片数据对象 var data = imgData.data; //猎取图片数据数组,该数组中每个像素用4个元从来保留,离别表示红、绿、蓝和透亮度值 var average = 0; for (var i = 0; i < data.length; i+=4) { average = Math.floor((data[i]+data[i+1]+data[i+2])/3); //将红、绿、蓝色值求平均值后得到灰度值 data[i] = data[i+1] = data[i+2] = average; 将每个像素点的色值重写 } imgData.data = data; context.putImageData(imgData,0,0); //将处理后的图像数据重写至Canvas画布,此时画布中图像变为黑白色 }; create.onclick = function(){ // 单击“生成图片”按钮,导出图片 var imgSrc = canvas.toDataURL(); //获取图片的DataURL var newImg = new Image(); var result = document.getElementById("result"); newImg.src = imgSrc; //将图片路径赋值给src result.innerHTML = ''; result.appendChild(newImg); }; }; };
可能上面代码写得不是非常不错,看起来也不是那么好了解,最佳本人能够亲自写一写,这样关于本人了解会更加深刻一些。
以上就是本文的全部内容,但愿对大家的学习有所帮忙,更多相干内容请关注百分百源码网!