首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查图像的特定像素是否透明?

如何检查图像的特定像素是否透明?
EN

Stack Overflow用户
提问于 2012-01-06 06:49:32
回答 3查看 184.7K关注 0票数 136

有没有办法检查PNG图像中选定的(x,y)点是否透明?

EN

回答 3

Stack Overflow用户

发布于 2012-01-06 06:55:05

正如@pst上面所说的,Canvas将是一个很好的方法。请查看此答案,以获得一个很好的示例:

getPixel from HTML Canvas?

一些专门为您提供服务的代码:

代码语言:javascript
复制
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处理程序中运行上面的代码:

代码语言:javascript
复制
$('el').click(function(e){
   console.log(e.clientX, e.clientY)
}

它们可以获取x和y的值。

票数 21
EN

Stack Overflow用户

发布于 2021-04-10 18:18:11

基于Brian Nickel的回答,只有源图像中需要的单个像素被绘制到1*1像素的画布上,这比仅仅为了获得单个像素而绘制整个图像更有效:

代码语言:javascript
复制
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;   
}
票数 2
EN

Stack Overflow用户

发布于 2018-07-15 18:38:07

使用:i << 2

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8751020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档