¿Cómo obtener el color del píxel en las coordenadas 123, 456 en la pantalla?

2

Mi aplicación AppleScript necesita obtener el color del píxel en las coordenadas 123, 456 en la pantalla.

    
pregunta tagliatelle 04.04.2013 - 17:57

2 respuestas

5

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.

    
respondido por el Chris Vasselli 15.04.2017 - 15:54
1

Posible, pero solo si encadena varios eventos:

  1. tomar una captura de pantalla do shell script "screencapture -l" & windowid & " ~/test.png"
  2. Recorte el píxel específico mediante ImageMagick

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á.

    
respondido por el jnovack 04.04.2013 - 22:58

Lea otras preguntas en las etiquetas