当前位置: 首页 > 面试题库 >

如何从图像中获取像素的x,y坐标颜色?

甄文彬
2023-03-14
问题内容

有什么方法可以检查PNG图像的选定点(x,y)是否透明?


问题答案:

基于Jeff的答案,您的第一步将是创建PNG的画布表示。以下内容将创建一个屏幕外画布,该画布的宽度和高度与您的图像相同,并在其上绘制图像。

var img = document.getElementById('my-image');
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height);

之后,当用户单击时,使用event.offsetXevent.offsetY获取位置。然后可以用来获取像素:

var pixelData = canvas.getContext('2d').getImageData(event.offsetX, event.offsetY, 1, 1).data;

因为您只抓取一个像素,所以pixelData是一个包含四个像素的R,G,B和A值的四项数组。对于Alpha,任何小于255的值都表示某种程度的透明度,0表示完全透明。

在所有这些中,为了方便起见,我都使用jQuery,但这并不是必需的。

注意:
getImageData属于浏览器的同源策略以防止数据泄漏,这意味着如果您用来自另一个域的图像或(来自某些域的SVG,但我相信,但某些浏览器可能已经解决了)SVG弄脏画布,则该技术将失败。这可以防止站点为已登录的用户提供自定义图像资产并且攻击者希望读取图像以获取信息的情况。您可以通过从同一服务器提供映像或实现跨域资源共享来解决问题。



 类似资料:
  • 我有一个jpg格式的地图图像。我正在尝试为每个像素计算纬度和经度。我有3点坐标也像素行和列。 地图图像 这里有三点: BLK:LATLNG:39.760751,27.840443 UTM_Meters:571990.1817772812,4401541.17886532区/带:35,'S'像素:[210,247]

  • 我有一张以色列地图。 我需要创建一个获得两个双参数(经度和纬度)的函数,该函数应该在地图图像中的那个区域上画一个小圆圈。 我有以下关于地图的信息: null 截图: https://gyazo.com/5a19dece37ebace496c6b8d68eb9ec3c

  • 我正在尝试将此java代码转换为python: 我在python中尝试过这个: 然而问题是我在python中得到不同的值。 为什么java返回负整数值,我如何在python中获得相同的结果?

  • 我想从现有的pdf中获取图像字段,并用其他图像填充它,以使用java中的pdfbox库创建新的pdf文件

  • 我已经完成了learnopengl突破系列中的几个教程。com,所以我有一个非常简单的2D渲染器。不过,我想给它添加一个子图像功能,在这里我可以为一种“源矩形”指定一个vec4,因此如果vec4是,它将只渲染一个宽度和高度为32的10,10的矩形,有点像SDL渲染器的工作方式。 渲染器的设置方式是所有精灵都使用一个包含纹理坐标的四边形VAO。起初,我认为我可以为每个精灵使用一个VAO数组,每个都有