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


2

내 AppleScript 응용 프로그램은 화면에서 123, 456 좌표의 픽셀 색상을 가져와야합니다.

답변:


6

내장 된 구성 요소 만 사용하여이 작업을 수행하는 방법을 발견했습니다.

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 명령은 좌표의 1x1 스크린 샷을 찍은 다음 bmp 형식의 임시 위치로 출력합니다.

그만큼 xxd 명령은 오프셋 54에서 해당 파일에서 3 바이트를 읽습니다. 54는 생성 된 bmp 파일에서 헤더의 길이이고 다음 3 바이트는 픽셀의 색상입니다.

그만큼 sed 명령은 출력의 처음 두 문자를 마지막 두 문자로 바꿉니다. 이것은 bmp가 정상적인 순서의 역순으로 색상을 저장하기 때문입니다. BBGGRR. 이 명령은 주문을 정상 RRGGBB.


내 대답을 망쳐 버린 것에 대해 젠장. 잘 했어.
jnovack

1

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

  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 1x1 + X + Y 비즈니스를 생략하여 모든 픽셀의 목록을 얻을 수 있습니다. 알파 채널을 보려면 이미지에 알파 채널이 있어야합니다. 그렇지 않으면 포함되지 않습니다.


1
나는 그것이 누군가가 대답을 알지 못한다는 가장 미친 질문이라고 생각할 때마다, 그냥 이렇게 손톱을 뻗은 멋진 대답에 일어난다. 인터넷 FTW!
bmike

감사. 나는 이것을 시도 할 것이다, 그러나 아마 코코아도 이것을 할 수 있을까?

네가 네이티브로 할 수 있다고 의심하는 것. 그것은, 당신을 위해 일하는 경우, 나는 답변에 대한 녹색 '체크 상자를 얻을 수있는 영광 것입니다 :)
jnovack
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.