web-dev-qa-db-fra.com

Existe-t-il un outil de ligne de commande qui renvoie la couleur du pixel en fonction des coordonnées de l'écran?

Existe-t-il un outil de ligne de commande qui renvoie la valeur de couleur d’un pixel, en se basant uniquement sur son coordonnées d’écran.

Existe-t-il un tel outil?

(En outre: l'outil ne doit nécessiter aucune action de l'utilisateur. Il consiste à exécuter une boucle dans un script.)

10
Peter.O

Vous pouvez utiliser le programme grabc . Il fera tourner le pointeur de la souris en croix et renverra les valeurs HTML et RVB de la couleur sélectionnée.

Sudo apt-get install grabc

Inconvénient: il n'est pas possible de faire des sélections au pixel près, car le réticule n'est pas assez fin.


Vous pouvez également créer un script python, du type:

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

rendez-le exécutable et exécutez pixel_rgb="$(/path/to/script.py x y)" dans votre script bash. Bien sûr, vous devez modifier le script comme vous en avez besoin, ajouter un peu de gestion des erreurs, etc.

PS: Je ne suis pas tout à fait sûr que vous puissiez faire quelque chose à propos de DeprecationWarning, alors je l’ai désactivé à la première ligne.

12
htorque

C'est un peu flou, mais vous pouvez y parvenir avec xdotool qui vous permet d'interagir avec la souris et grabc qui obtient la couleur à partir d'un emplacement cliqué à l'écran.

Sudo apt-get install xdotool grabc

D'abord lancer grabc mais le fond

grabc &

Effectuez ensuite un clic de souris à l’aide de xdotool.

xdotool click 1

Le clic sera capturé par le curseur de grabc et le processus d'arrière-plan avec la couleur en sortie.

5
misterben

Une solution différente, en utilisant xwd et xdotool:

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

$X et $Y sont vos coordonnées.

Dans le cadre de Xorg, xwd devrait être préinstallé sur votre système. xdotool peut être installé avec:

Sudo apt-get install xdotool 

Basé sur @ Christian's réponse sur un StackOverflow Q & A et ce fil imagemagick.org .

2
Glutanimate

J'ai écrit un module python pour de telles opérations, appelé Macropolo. Mais, cela fait beaucoup plus de choses que simplement obtenir la couleur d'un pixel à l'écran.

Voici le message sur le forum où je l'ai partagé: http://ubuntuforums.org/showthread.php?t=2155281

Le module possède de nombreuses fonctions qui vous permettent, par exemple, de compter le nombre de pixels qui ont une couleur spécifique dans une zone de l'écran, rechercher une ou plusieurs couleurs de pixel dans cette zone, attendre qu'un pixel ou une zone de l'écran aient une couleur spécifique, attendre une couleur de pixel et exécuter une autre fonction en attendant (par exemple, déplacez le curseur pour ne pas laisser l’écran s’éteindre pendant l’attente d’une couleur spécifique).

Mais, comme je l’ai dit, cela fait beaucoup plus de choses, comme simuler des clics de souris et un clavier, prendre des captures d’écran de la zone de l’écran, etc.

2
hytromo