Мое приложение AppleScript должно получить цвет пикселя в координатах 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/'"
Выводим цвет в шестнадцатеричном виде, например, ffffff
для белых.
screencapture
Команда делает снимок координат 1x1 и выводит его в формате bmp во временную папку.
xxd
Команда читает 3 байта из этого файла со смещением 54. 54 - длина заголовка в сгенерированном файле bmp, а следующие 3 байта - цвет пикселя.
sed
Команда заменяет первые два символа вывода на последние два. Это потому, что bmp хранит цвета в обратном порядке: BBGGRR
, Эта команда меняет порядок на нормальный RRGGBB
,
Возможно, но только если вы объедините несколько событий:
do shell script "screencapture -l" & windowid & " ~/test.png"
Выход:
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, чтобы получить список всех пикселей. Также обратите внимание, что ваше изображение должно иметь альфа-канал, чтобы увидеть альфа-канал, иначе он просто не будет включен.