Javascript画布:如何获取透明png文件上的特定点?

Javascript画布:如何获取透明png文件上的特定点?,javascript,canvas,Javascript,Canvas,好的,我对获取图像数据函数感到困惑 我有一个png格式的路径图像,上面有透明的背景。我需要得到的是高度为/2的路径左边缘和右边缘的坐标x,y。(红色箭头的点) getImageData是正确的函数吗?有人能给我一些建议吗 提前感谢。是的,使用getImageData(x,y,width,height) 如果只有两种颜色(此处为透明和白色): var img=newimage(); img.onload=获取点; img.crossOrigin='匿名'; img.src=”https://dl

好的,我对获取图像数据函数感到困惑

我有一个png格式的路径图像,上面有透明的背景。我需要得到的是高度为/2的路径左边缘和右边缘的坐标x,y。(红色箭头的点)

getImageData是正确的函数吗?有人能给我一些建议吗


提前感谢。

是的,使用
getImageData(x,y,width,height)
如果只有两种颜色(此处为透明和白色):
var img=newimage();
img.onload=获取点;
img.crossOrigin='匿名';
img.src=”https://dl.dropboxusercontent.com/s/lvgvekzkyqkypos/path.png";
函数getPoints(){
//设置画布
var canvas=document.createElement('canvas'),
ctx=canvas.getContext('2d');
canvas.width=this.width;
canvas.height=this.height;
//画图像
ctx.drawImage(这个,0,0);
//得到中间的y线
var imageData=ctx.getImageData(0,数学地板(this.height/2),this.width,1);
var数据=imageData.data;
//设置一个空对象来存储我们的点
var pts={x1:null,y1:Math.floor(this.height/2),x2:null,y2:Math.floor(this.height/2)};
//定义第一个不透明度值
var-color=0;
//遍历数据数组

对于(var i=0;我刚刚完成了测试。工作起来很有魅力。但是,我仍在试图理解您的代码如何使用透明的第四个值,以及为什么数据[i+3]不遍历每个数据。无论如何,感谢您给我一个开始!ctx.getImageData()确实返回一个imageData对象。在这个对象中,有一个名为
data
的属性,它是一个ArrayBuffer。这个ArrayBuffer包含每个像素的每个红色、绿色、蓝色和alpha(透明)值。因此在这个代码中,我将以4(每个像素)遍历
data
,只查找alpha值(
data)[i+3]
)。如果我必须检查像素是否为白色,我会做
如果(data[i]==data[i+1]==data[i+2]==data[i+3]==255)
啊!明白了!非常感谢!这很有趣。