Mon application AppleScript doit obtenir la couleur du pixel aux coordonnées 123, 456 à l'écran.
Réponses
Trop de publicités?J'ai trouvé un moyen de le faire en n'utilisant que des composants intégrés :
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 sortie est la couleur en hexadécimal, par exemple, ffffff
pour le blanc.
La commande screencapture
prend une capture d'écran de 1x1 des coordonnées, et la sauvegarde au format bmp dans un emplacement temporaire.
La commande xxd
lit 3 octets du fichier à l'offset 54. 54 est la longueur de l'en-tête dans le fichier bmp généré, et les 3 octets suivants sont la couleur du pixel.
La commande sed
échange les deux premiers caractères de la sortie avec les deux derniers. Cela est dû au fait que le bmp enregistre les couleurs dans l'ordre inverse de l'ordre normal - BBGGRR
. Cette commande inverse l'ordre pour obtenir RRGGBB
correctement.
Possible, but only if you chain together multiple events:
- Take a screenshot
do shell script "screencapture -l" & windowid & " ~/test.png"
- Crop around the specific pixel using 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)
The idea is to crop around a specific pixel, then output it to the special txt: format, with an output file name of - which is of course standard output.
You can leave out the the -crop 1x1+X+Y business to just get a listing of all pixels. Also note that you image must have an alpha channel to see the alpha channel, otherwise it just won't get included.