[apple] 화면에서 좌표 123, 456의 픽셀 색상을 얻는 방법은 무엇입니까?

내 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.


답변

가능하지만, 여러 이벤트를 연결하는 경우에만 가능합니다.

  1. 스크린 샷 찍기 do shell script "screencapture -l" & windowid & " ~/test.png"
  2. 특정 픽셀 주위에서 자르기 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 비즈니스를 생략하여 모든 픽셀의 목록을 얻을 수 있습니다. 알파 채널을 보려면 이미지에 알파 채널이 있어야합니다. 그렇지 않으면 포함되지 않습니다.


답변