adb 获取指定位置的颜色值

1,331 阅读1分钟

获取屏幕中x=100,y=100位置的颜色值

        deviceid="" #指定设备填写:例-s 10.30.127.247:5555
        
        #先进行截图
        rm ./screen.dump 2> /dev/null
        adb $deviceid shell rm /sdcard/screen.dump
        adb $deviceid shell screencap /sdcard/screen.dump
        adb $deviceid pull /sdcard/screen.dump ./ > /dev/null
        
        #获取屏幕信息,宽高
        widthheight=$(adb $deviceid shell wm size | sed "s/.* //")
        width=$(($(echo $widthheight | sed "s/x.*//g" )+0))
        height=$(($(echo $widthheight | sed "s/.*x//g" )+0))
        #获取截图大小(字节数)
        screenshot_size=$(($(wc -c screen.dump | awk '{print $1}')));
        #每像素字节数
        buffer_size=$(($screenshot_size/($width*height)))
        #假设获取100,100位置的颜色
        x=100;y=100 
        let offset=$width*$y+$x+3 
        #dd命令用于拷贝截图中指定大小的内容; hexdump获取对应内容的rgb值
        color=$(dd if="screen.dump" bs=$buffer_size count=1 skip=$offset 2>/dev/null | hexdump | awk '{ print toupper($0) }' | grep -Eo "([0-9A-F]{2})+" | sed ':a;N;$!ba;s/\n//g' | awk 'NR>1 && NR<5')
        echo $color

具体参考:stackoverflow.com/questions/2…

据此编写了一个京训钉的监测脚步,指定条件下发送Mac通知提醒 github.com/854133055/A…