Existe uma ferramenta de linha de comando que retorna a cor do pixel com base nas coordenadas da tela?

10

Existe uma ferramenta de linha de comando que retorna o valor de cor de um pixel, baseado somente em suas coordenadas de tela .

Existe tal ferramenta?

(Também: a ferramenta não deve exigir nenhuma ação do usuário. Ela é executada em um loop em um script.)

    
por Peter.O 08.12.2010 / 10:48

4 respostas

11

Você pode usar o programa grabc . Ele transformará o ponteiro do mouse em uma cruz e retornará os valores HTML e RGB da cor selecionada.

sudo apt-get install grabc

Downside: não é possível fazer seleções de pixels exatas, porque a mira não é fina o suficiente.

Você também pode criar um script python, algo como:

#!/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]))

torne-o executável e execute pixel_rgb="$(/path/to/script.py x y)" no seu script bash. Claro que você precisaria alterar o script da maneira que você precisa, adicionar algum tratamento de erros e tal.

PS: Não tenho certeza se você pode fazer alguma coisa sobre a DeprecationWarning, então desliguei na primeira linha.

    
por htorque 08.12.2010 / 11:07
5

Isso é um pouco complicado, mas você pode conseguir isso com xdotool, que permite interagir com o mouse, e grabc, que obtém a cor de um local clicado na tela.

sudo apt-get install xdotool grabc

Primeiro, execute o grabc mas faça um plano de fundo

grabc &

Em seguida, execute um clique do mouse usando xdotool

xdotool click 1

O clique será capturado pelo cursor de grabc e o processo de segundo plano com a saída da cor.

    
por misterben 08.12.2010 / 11:17
2

Eu escrevi um módulo python para operações como esta, chamado Macropolo. Mas faz muito mais coisas do que simplesmente obter a cor de um pixel na tela.

Aqui está a postagem do fórum em que compartilhei: link

O módulo tem muitas funções que permitem, por exemplo conte a quantidade de pixels que têm uma cor específica em uma área da tela, procure cores de pixels na área, espere por um pixel ou uma área da tela tenha uma cor específica, aguarde a cor do pixel e execute alguma outra função enquanto espera (por exemplo, mova o cursor para não deixar a tela desligar enquanto você está esperando por uma cor específica).

Mas, como eu disse, ele faz muito mais coisas, como simular cliques do mouse e teclado, captura de tela da área da tela e muito mais.

    
por hytromo 07.10.2013 / 17:00
2

Uma solução diferente, usando xwd e xdotool :

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

onde $X e $Y são suas coordenadas.

Como parte do Xorg xwd deve vir pré-instalado em seu sistema. xdotool pode ser instalado com:

sudo apt-get install xdotool 

Com base na resposta do @Christ @ em um StackOverflow Q & A e este tópico do imagemagick.org .

    
por Glutanimate 26.08.2014 / 07:03