Mi aplicación AppleScript necesita obtener el color del píxel en las coordenadas 123, 456 en la pantalla.
Mi aplicación AppleScript necesita obtener el color del píxel en las coordenadas 123, 456 en la pantalla.
Encontré una forma de hacerlo usando solo componentes integrados:
do shell script "screencapture -R123,456,1,1 -t bmp $TMPDIR/test.bmp && \
xxd -p -l 3 -s 54 $TMPDIR/test.bmp | \
sed 's/\(..\)\(..\)\(..\)/\3\2\1/'"
La salida es el color en hexadecimal, por ejemplo, ffffff
para blanco.
El comando screencapture
toma una captura de pantalla 1x1 de las coordenadas y las envía en formato bmp a una ubicación temporal.
El comando xxd
lee 3 bytes de ese archivo en el desplazamiento 54. 54 es la longitud del encabezado en el archivo bmp generado, y los siguientes 3 bytes son el color del píxel.
El comando sed
intercambia los dos primeros caracteres de la salida con los dos últimos. Esto se debe a que bmp almacena los colores al revés del orden normal - BBGGRR
. Este comando cambia el orden al RRGGBB
normal.
Posible, pero solo si encadena varios eventos:
do shell script "screencapture -l" & windowid & " ~/test.png"
Salida:
convert ~/test.png -crop 1x1+123+456 txt:-
# ImageMagick pixel enumeration: 1,1,255,rgba
0,0: ( 0, 74,117,251) #004A75FB rgba(0,74,117,0.984314)
La idea es recortar alrededor de un píxel específico y luego enviarlo al formato especial txt: con un nombre de archivo de salida, que es, por supuesto, un resultado estándar.
Puede omitir el negocio -crop 1x1 + X + Y para obtener una lista de todos los píxeles. También tenga en cuenta que su imagen debe tener un canal alfa para ver el canal alfa, de lo contrario no se incluirá.
Lea otras preguntas en las etiquetas applescript screen