程序检测单个像素的颜色变化?

时间:2012-02-23 06:49:14

标签: macos colors pixel

我想要一个程序,我可以输入屏幕上特定像素的坐标,当该像素的颜色发生变化时,会发生一些事情。 (特别是音乐)。

我有一个macbook,对编程很新,有关如何做的任何提示吗?

1 个答案:

答案 0 :(得分:0)

我不知道如何将屏幕的当前图像作为像素数据,但是当你这样做时,它将作为一个原始数组(最有可能是unsigned char)。该阵列可以是多种不同格式中的任何一种,但最常见的是4字节RGBA,这意味着每个组件获得1字节的信息。像素数据通常像书中的文字一样布局:从左到右,从上到下。

让我们说你的像素位于(x,y)位置。要获取像素数据的索引,您需要执行以下操作:

int width;       //set to the width of the image
int height;      //set to the height of the image
int index;

//number of bytes per pixel * number of pixels per row * number of rows
index = 4 * width * y;     //get the index of the start of the correct row

//number of bytes per pixel * number of pixels to go across
index += 4 * x;            //get the index of the correct column in the row

// pixels[index] = red byte
// pixels[index + 1] = green byte
// pixels[index + 2] = blue byte
// pixels[index + 3] = alpha byte
// pixels[index - (any number)] = previous pixels
// pixels[index + (any number more than 3)] = future pixels

既然您知道如何访问特定像素的像素数据,只需在程序开头存储给定像素的RGBA值,并在程序运行时,偶尔将当前颜色与存储的颜色进行比较(使用一个计时器)。当他们不同时,做点什么(播放音乐)。

希望这有帮助!