3 votos

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

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

9voto

Remus Stratulat Puntos 73

He encontrado una manera de hacerlo utilizando sólo componentes incorporados:

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 el blanco.

En screencapture toma una captura de pantalla 1x1 de las coordenadas y la envía en formato bmp a una ubicación temporal.

En xxd lee 3 bytes de ese fichero en el offset 54. 54 es la longitud de la cabecera en el archivo bmp generado, y los 3 bytes siguientes son el color del píxel.

En sed intercambia los dos primeros caracteres de la salida por los dos últimos. Esto se debe a que el bmp almacena los colores en orden inverso al normal - BBGGRR . Este comando cambia la orden a la normal RRGGBB .

2voto

jnovack Puntos 414

Es posible, pero sólo si encadenas varios eventos:

  1. Haz una captura de pantalla do shell script "screencapture -l" & windowid & " ~/test.png"
  2. Recortar alrededor del píxel específico utilizando 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, a continuación, la salida a la especial txt: formato, con un nombre de archivo de salida de - que es, por supuesto, la salida estándar.

Puede omitir el asunto -crop 1x1+X+Y para obtener simplemente un listado de todos los píxeles. También tenga en cuenta que la imagen debe tener un canal alfa para ver el canal alfa, de lo contrario simplemente no se incluirá.

1 votos

Cada vez que pienso que esa es la pregunta más descabellada y que no hay forma de que alguien sepa responderla, me encuentro con una respuesta tan increíble como esta que lo consigue. ¡Internet FTW!

0 votos

Gracias. Lo intentaré, pero ¿quizás Cocoa también pueda hacerlo?

0 votos

Dudo que se pueda hacer de forma nativa. Aunque, si funciona para usted, yo sería un honor para conseguir un lil' casilla de verificación verde para la respuesta :)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X