Moja aplikacja AppleScript musi uzyskać kolor piksela na współrzędnych 123, 456 na ekranie.
Moja aplikacja AppleScript musi uzyskać kolor piksela na współrzędnych 123, 456 na ekranie.
Odpowiedzi:
Znalazłem sposób, aby to zrobić, używając tylko wbudowanych komponentów:
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/'"
Wyjście jest na przykład kolorem szesnastkowym, ffffff
na biały.
The screencapture
polecenie wykonuje zrzut ekranu współrzędnych 1x1 i wysyła go w formacie bmp do tymczasowej lokalizacji.
The xxd
komenda odczytuje 3 bajty z tego pliku przy przesunięciu 54. 54 to długość nagłówka w wygenerowanym pliku bmp, a następne 3 bajty to kolor piksela.
The sed
polecenie zamienia pierwsze dwa znaki wyjścia z dwoma ostatnimi. Dzieje się tak dlatego, że bmp przechowuje kolory w odwrotnej kolejności niż normalne - BBGGRR
. To polecenie zamienia kolejność na normalną RRGGBB
.
Możliwe, ale tylko jeśli połączymy wiele wydarzeń:
do shell script "screencapture -l" & windowid & " ~/test.png"
Wydajność:
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)
Pomysł polega na przycięciu konkretnego piksela, a następnie wyprowadzeniu go do specjalnego formatu txt: z nazwą pliku wyjściowego - co jest oczywiście standardowym wyjściem.
Możesz pominąć biznes -crop 1x1 + X + Y, aby uzyskać listę wszystkich pikseli. Zauważ również, że obraz musi mieć kanał alfa, aby zobaczyć kanał alfa, w przeciwnym razie po prostu nie zostanie uwzględniony.