有没有办法检查PNG图像中选定的(x,y)点是否透明?
发布于 2012-01-06 06:55:05
正如@pst上面所说的,Canvas将是一个很好的方法。请查看此答案,以获得一个很好的示例:
一些专门为您提供服务的代码:
var imgd = context.getImageData(x, y, width, height);
var pix = imgd.data;
for (var i = 0, n = pix.length; i < n; i += 4) {
console.log pix[i+3]
}
这将逐行进行,因此您需要将其转换为x,y,并将for循环转换为直接检查或在内部运行条件。
再读一遍你的问题,看起来你想要能够理解这个人点击的要点。这可以通过jquery的click事件非常容易地完成。只需在click处理程序中运行上面的代码:
$('el').click(function(e){
console.log(e.clientX, e.clientY)
}
它们可以获取x和y的值。
发布于 2021-04-10 18:18:11
基于Brian Nickel的回答,只有源图像中需要的单个像素被绘制到1*1像素的画布上,这比仅仅为了获得单个像素而绘制整个图像更有效:
function getPixel(img, x, y) {
let canvas = document.createElement('canvas');
canvas.width = 1;
canvas.height = 1;
canvas.getContext('2d').drawImage(img, x, y, 1, 1, 0, 0, 1, 1);;
let pixelData = canvas.getContext('2d').getImageData(0, 0, 1, 1).data;
return pixelData;
}
发布于 2018-07-15 18:38:07
使用:i << 2
const data = context.getImageData(x, y, width, height).data;
const pixels = [];
for (let i = 0, dx = 0; dx < data.length; i++, dx = i << 2) {
if (data[dx+3] <= 8)
console.log("transparent x= " + i);
}
https://stackoverflow.com/questions/8751020
复制相似问题