Есть ли инструмент командной строки, который возвращает цвет пикселя на основе координат экрана?

10

Есть ли инструмент командной строки возвращает значение цвета пикселя, основанное исключительно на его координатах экрана .

Есть ли такой инструмент?

(Также: инструмент не должен требовать каких-либо действий пользователя. Он должен запускаться в цикле в скрипте.)

    
задан Peter.O 08.12.2010 в 09:48
источник

4 ответа

11

Вы можете использовать программу grabc . Он превратит ваш указатель мыши в перекрестье и вернет значения HTML и RGB выбранного цвета.

sudo apt-get install grabc

Даунсайд: невозможно сделать пиксельные точные выборы из-за недостаточного уровня перекрестия.

Вы также можете создать скрипт python, например:

#!/usr/bin/python -W ignore::DeprecationWarning
import sys
import gtk

def get_pixel_rgb(x, y):
    pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, 1, 1)
    pixbuf.get_from_drawable(gtk.gdk.get_default_root_window(),
                             gtk.gdk.colormap_get_system(), 
                             x, y, 0, 0, 1, 1)
    return pixbuf.get_pixels_array()[0][0]

print get_pixel_rgb(int(sys.argv[1]), int(sys.argv[2]))

сделать его исполняемым и запустить pixel_rgb="$(/path/to/script.py x y)" в вашем скрипте bash. Конечно, вам нужно будет изменить сценарий так, как вам нужно, добавить некоторые ошибки и т. Д.

PS: Я не совсем уверен, что вы можете что-нибудь сделать с помощью DeprecationWarning, поэтому я отключил его в первой строке.

    
ответ дан htorque 08.12.2010 в 10:07
источник
5

Это немного cludgy, но вы можете достичь этого с помощью xdotool, который позволяет вам взаимодействовать с мышью и grabc, который получает цвет из местоположения, щелкнутого по экрану.

sudo apt-get install xdotool grabc

Сначала запустите grabc, но запустите его

grabc &

Затем выполните mouseclick, используя xdotool

xdotool click 1

Щелчок будет захвачен курсором grabc и фоновым процессом с выводом цвета.

    
ответ дан misterben 08.12.2010 в 10:17
2

Я написал модуль python для таких операций, что называется Macropolo. Но, это намного больше, чем просто получение цвета пикселя на экране.

Вот сообщение на форуме, где я поделился им: Ссылка

Модуль имеет много функций, которые позволяют вам, например. подсчитайте количество пикселей, которые имеют определенный цвет в области экрана, найдите цвет (-ы) пикселей в области, дождитесь, когда пиксель или область экрана имеют определенный цвет, дождитесь цвета пикселя и запустите некоторые другие (например, переместите курсор для того, чтобы вы не выключили экран, пока вы ожидаете определенного цвета).

Но, как я уже сказал, это намного больше, например, имитация щелчков мыши и клавиатуры, снятие скриншотов с области экрана и т. д.

    
ответ дан hakermania 07.10.2013 в 15:00
1

Другое решение, использующее xwd и xdotool :

xwd -root -silent | convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:- | grep -om1 '#\w\+'

где $X и $Y - ваши координаты.

Как часть Xorg xwd следует предусмотреть в вашей системе. xdotool можно установить с помощью:

sudo apt-get install xdotool 

Основываясь на @ Christian ответе на StackOverflow Q & amp; A и эта тема imagemagick.org .

    
ответ дан Glutanimate 26.08.2014 в 05:03