Come ottenere il colore del pixel nelle coordinate 123, 456 nello schermo?

2

La mia app AppleScript deve ottenere il colore del pixel nelle coordinate 123, 456 sullo schermo.

    
posta tagliatelle 04.04.2013 - 17:57
fonte

2 risposte

6

Ho trovato un modo per farlo usando solo componenti built-in:

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/'"

L'output è il colore in esadecimale, ad esempio ffffff per il bianco.

Il comando screencapture prende uno screenshot 1x1 delle coordinate e lo stampa nel formato bmp in una posizione temporanea.

Il comando xxd legge 3 byte da quel file all'offset 54. 54 è la lunghezza dell'intestazione nel file bmp generato e i 3 byte successivi sono il colore del pixel.

Il comando sed scambia i primi due caratteri dell'output con gli ultimi due. Questo perché il bmp memorizza i colori al contrario del normale ordine - BBGGRR . Questo comando scambia l'ordine con il normale RRGGBB .

    
risposta data 15.04.2017 - 15:54
fonte
1

Possibile, ma solo se si concatenano più eventi:

  1. Scatta uno screenshot do shell script "screencapture -l" & windowid & " ~/test.png"
  2. Ritaglia il pixel specifico usando ImageMagick

Output:

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)

L'idea è quella di ritagliare un pixel specifico, quindi inviarlo allo speciale txt: format, con un nome di output del file - che è ovviamente l'output standard.

Puoi escludere il business -crop 1x1 + X + Y per ottenere solo un elenco di tutti i pixel. Nota inoltre che l'immagine deve avere un canale alfa per vedere il canale alfa, altrimenti non verrà incluso.

    
risposta data 04.04.2013 - 22:58
fonte

Leggi altre domande sui tag