La mia app AppleScript deve ottenere il colore del pixel nelle coordinate 123, 456 sullo schermo.
La mia app AppleScript deve ottenere il colore del pixel nelle coordinate 123, 456 sullo schermo.
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
.
Possibile, ma solo se si concatenano più eventi:
do shell script "screencapture -l" & windowid & " ~/test.png"
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.
Leggi altre domande sui tag applescript screen