내 AppleScript 응용 프로그램은 화면에서 123, 456 좌표의 픽셀 색상을 가져와야합니다.
답변
내장 된 구성 요소 만 사용하여이 작업을 수행하는 방법을 발견했습니다.
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/'"
출력은 16 진수의 색상입니다 (예 : ffffff
흰색.
그만큼 screencapture
명령은 좌표의 1×1 스크린 샷을 찍은 다음 bmp 형식의 임시 위치로 출력합니다.
그만큼 xxd
명령은 오프셋 54에서 해당 파일에서 3 바이트를 읽습니다. 54는 생성 된 bmp 파일에서 헤더의 길이이고 다음 3 바이트는 픽셀의 색상입니다.
그만큼 sed
명령은 출력의 처음 두 문자를 마지막 두 문자로 바꿉니다. 이것은 bmp가 정상적인 순서의 역순으로 색상을 저장하기 때문입니다. BBGGRR
. 이 명령은 주문을 정상 RRGGBB
.
답변
가능하지만, 여러 이벤트를 연결하는 경우에만 가능합니다.
- 스크린 샷 찍기
do shell script "screencapture -l" & windowid & " ~/test.png"
- 특정 픽셀 주위에서 자르기 ImageMagick
산출:
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)
아이디어는 특정 픽셀 주변을 잘라내어 출력 파일 이름이 – 물론 표준 출력 인 특수 txt : 형식으로 출력하는 것입니다.
-crop 1×1 + X + Y 비즈니스를 생략하여 모든 픽셀의 목록을 얻을 수 있습니다. 알파 채널을 보려면 이미지에 알파 채널이 있어야합니다. 그렇지 않으면 포함되지 않습니다.