怎么取屏幕上任意点的颜色值
1个回答
展开全部
与操作系统有关,你可以找现成的软件来用。或自己写程序。例如:
android获取屏幕某一点的像素值:
Android屏幕绘制基本与linux相同,都是使用Framebuffer机制来绘制屏幕。FrameBuffer提供接口将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,应用程序可以简单地通过改变这段内存的值来改变屏幕上某一点的颜色。例如如果你想把一张bitmap图片显示到屏幕上去,你只要解析bitmap之后把数据bit
copy进framebuffer,屏幕就会立刻显示出来。一般Linux的framebuffer 对应/dev/fb0这个字符设备文件。 Android稍微改了改,放在/dev/graphics/fb0下。
这样我们就可以通过读取fb0来获取屏幕信息了。比如想要获取屏幕上坐标为(x,y) 一点的像素值,就可以先获取fb0的比特流,读取相应位置的数据。如果屏幕是32位色的,一个像素点的大小就是32/8=4byte。那么(x,y)点在fb0中的位置就是从(width*y+x)*4开始、长4byte的一段。
windows 系统,你可以按 组合键: Ctrl+PrScr (即print screen) 获得 全屏幕图像,用 mspaint 存放为 BMP 或 PNG 格式,然后 根据你要的坐标点,读出这点像素。或者,用 OpenGL 写程序,直接读得 鼠标点 的 RGB.
android获取屏幕某一点的像素值:
Android屏幕绘制基本与linux相同,都是使用Framebuffer机制来绘制屏幕。FrameBuffer提供接口将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,应用程序可以简单地通过改变这段内存的值来改变屏幕上某一点的颜色。例如如果你想把一张bitmap图片显示到屏幕上去,你只要解析bitmap之后把数据bit
copy进framebuffer,屏幕就会立刻显示出来。一般Linux的framebuffer 对应/dev/fb0这个字符设备文件。 Android稍微改了改,放在/dev/graphics/fb0下。
这样我们就可以通过读取fb0来获取屏幕信息了。比如想要获取屏幕上坐标为(x,y) 一点的像素值,就可以先获取fb0的比特流,读取相应位置的数据。如果屏幕是32位色的,一个像素点的大小就是32/8=4byte。那么(x,y)点在fb0中的位置就是从(width*y+x)*4开始、长4byte的一段。
windows 系统,你可以按 组合键: Ctrl+PrScr (即print screen) 获得 全屏幕图像,用 mspaint 存放为 BMP 或 PNG 格式,然后 根据你要的坐标点,读出这点像素。或者,用 OpenGL 写程序,直接读得 鼠标点 的 RGB.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询