totalcontrol吧 关注:349贴子:1,076
  • 3回复贴,共1

JS API 强大功能之获取指定坐标的颜色值

只看楼主收藏回复

Total Control支持获取指定像素的颜色值,详情如下:
1. 原型
getPixelColor(location,coordX,coordY)
2. 描述
获取手机屏幕或内存图片指定像素的颜色值,获取的是R.G.B的值以及 16 进制的 RGB 颜色值。
内存查找,首先需要把图片存储到内存指定位置,可用的内存为@0、@1 或 @2,当我们找图、找色、文字识别时,就可以重复使用保存在内存位置的图片数据,找图、找色、文字识别就更快。如何保存图片到内存,请参照screenshotToMemory API。保存到内存的图片并不是一直存在,其生命周期为应用程序的生命周期。也就说只要我们没有关闭手机端 Total Control 应用程序,保存到内存的图片数据一直可用。
当我们需要使用该 API 操作指定内存位置中存储的图片数据,就使用带有"location"参数的 API
3. 参数简介
location: 可选项,指定内存存储数据的位置;@0、@1 或 @2 表示固定的三个内存位置,"@@" 表示最后一次内存截图。@@使用时注意事项如下:
当使用 @@ 指定位置时,首先查找最后一次内存截图是否可用,如果可用,则直接使用;如果最后一次内存截图为空,不可用,则查找@0、@1、@2这三个内存位置,使用第一个非空缓冲区;如果所有屏幕缓冲区均为空,则调用screenshotToMemory(“ @ 0”)截屏到的@0,并使用 "@0" 作为最后一个缓冲区。
coordX: 整型,指定像素的 X 坐标
coordY: 整型,指定像素的 Y 坐标
4. 返回值
对象:Color 对象,像素的颜色值,这里返回的是R.G.B的值,我们可以通过color.r,color.g,color.b得到红色、绿色和蓝色的值,可以通过 color.rgb 获取 16 进制的RGB 颜色值;失败可通过 lastError() 函数获取具体的错误信息。
5. 详细示例
示例一:获取屏幕坐标(578,621)的颜色值
//获取当前主控设备对象var device = Device.getMain();//获取手机屏幕上指定像素的颜色值color = device.getPixelColor(578,621);//输出手机屏幕上指定像素的颜色值if (color != null) { print("R.G.B的值为:"); print(printVar(color)); print("红色:"+color.r); print("绿色:"+color.g); print("蓝色:"+color.b); print("rgb值:"+color.rgb);} else { print(lastError());}
示例二:获取内存位置 "@0" 中图片指定像素(578,621)的颜色值。
//获取当前主控设备对象var device = Device.getMain();//截屏并保存到内存“@0”var ret = device.screenshotToMemory("@0");if (ret == 0){//获取内存位置 "@0" 中图片指定像素的颜色值color = device.getPixelColor("@0",578,621);//输出手机屏幕上指定像素的颜色值if (color != null) { print("R.G.B的值为:"); print(printVar(color)); print("红色:"+color.r); print("绿色:"+color.g); print("蓝色:"+color.b);print("rgb值:"+color.rgb);} else { print(lastError()); }} else { print(lastError());}运行结果:
示例一,示例二执行成功,则返回:
R.G.B的值为:{ r: 253 g: 128 b: 124 rgb: '0xfd807c'} 红色:253绿色:128蓝色:124rgb值:0xfd807c
温馨提示:
如果示例二返回值为 "memory data is null!",则表示我们的内存位置不可用,这时我们需要使用 screenshotToMemory 来指定我们需要存储数据的内存位置。


1楼2020-02-07 16:44回复
    怎么加你,联系方式给一个


    IP属地:甘肃2楼2020-02-10 21:34
    收起回复
      2025-05-29 16:10:33
      广告
      大神,有没有找到图色的后续操作的教程。


      3楼2021-11-19 21:09
      回复