Outil pour sélectionner facilement un pixel à l'écran et obtenir la couleur et les coordonnées absolues


18

Je recherche un outil qui me permet de sélectionner n'importe quel pixel sur l'écran et d'obtenir sa couleur RVB et son emplacement absolu (x, y).

J'ai utilisé des outils sous Windows qui montrent un grand carré agrandi avec un réticule me permettant de sélectionner facilement le pixel que je veux et d'obtenir ses détails.

Y a-t-il quelque chose comme ça pour Ubuntu?


juste curieux de savoir pourquoi vous cherchez cette combinaison particulière ensemble ... qui peut nous aider à réfléchir à une réponse. pourquoi voulez-vous connaître les coordonnées x, y et la couleur?
snowguy

J'écris un outil d'automatisation qui envoie des entrées au clavier et à la souris en réponse à certaines choses à l'écran. Certaines parties dépendent de l'utilisation des décalages x, y de certains boutons, etc. à l'intérieur d'une fenêtre, et j'aimerais un moyen facile de trouver exactement ces décalages.
Flash

Si c'est pour le Web et que vous êtes Firefox, il existe une extension appelée ColorZilla. colorzilla.com/firefox
Anonyme

Andrew, on dirait que Ian B a écrit un outil qui fait exactement ce que vous voulez. On dirait qu'il mérite la prime.
snowguy

Réponses:


4

Le meilleur ajustement est ... un petit outil Windows appelé ColorPix (via WINE)

Après une recherche longue et difficile, il semble qu'aucun des outils disponibles pour Ubuntu / Linux ne réponde à vos critères, à savoir l' agrandissement et l' affichage des coordonnées .

Nous optons donc pour un petit outil Windows qui - de manière critique - fonctionne simplement avec une installation WINE par défaut, aucune configuration, installation, DLL, etc. nécessaires.

  • Il dispose d'un zoom réglable, d'une copie en un clic dans plusieurs formats et d'un affichage coordonné:

    entrez la description de l'image ici

1. Installez Wine

sudo apt-get install wine

(c'est ça!)

2. Téléchargez ColorPix

ColorPix peut être officiellement téléchargé en tant que petit exe portable de 600 Ko ici

Je suggère de télécharger directement dans votre répertoire binaire local avec:

sudo wget -O/usr/local/bin/ColorPix.exe http://www.colorschemer.com/ColorPix.exe

3. Créez un lanceur pour ColorPix

  • Prenons d'abord une icône:

    sudo wget -O/usr/share/icons/colorpix.png http://cdn.alternativeto.net/i/22e49edc-efa7-e011-979d-0025902c7e73_11865.png
    
  • Appuyez Alt+F2maintenant et tapez gksudo gedit /usr/share/applications/colorpix.desktop, collez ce qui suit et enregistrez le fichier:

    [Entrée de bureau]
    Nom = ColorPix
    GenericName = ColorPix
    Commentaire = ColorPicker via WINE
    Exec = wine /usr/local/bin/ColorPix.exe
    Terminal = faux
    Icon = / usr / share / icons / colorpix.png
    Type = Application
    StartupNotify = true
    
  • Depuis un terminal, exécutez:

    sudo chmod +x /usr/share/applications/colorpix.desktop
    
  • Dans quelques secondes, il sera disponible dans le lanceur sous la forme:

    entrez la description de l'image ici

4. Utilisation de ColorPix

Démarrez-le et la toute première fois, cela peut prendre quelques secondes pendant l'initialisation de WINE.

La capture d'écran ci-dessous le montre en action, avec:

  • Les coordonnées en haut
  • Valeurs de couleur dans différents formats ci-dessous (cliquez pour copier dans le presse-papiers)
  • Loupe réglable ci-dessous
  • Appuyez sur n'importe quelle touche une fois que vous êtes sur le pixel souhaité pour verrouiller les valeurs

    entrez la description de l'image ici


Réponse bien écrite et surprenante - merci! Mais il est difficile de supporter 625 Mo de téléchargement de vin, donc j'espère que Ian B obtiendra de l'aide avec sa jolie petite application python ....
nealmcb

Utilisez simplement xmag, comme décrit ci-dessous, et maintenez le bouton de la souris sur le pixel dont vous voulez les coordonnées.
hackerb9

12

Il existe un outil appelé gpick .

Ici vous pouvez voir une image de l'outil. Avec gpick, vous pouvez sélectionner des pixels, voir le code HTML, ajouter des couleurs à la palette et générer des couleurs.

Pour l'utiliser, faites un clic droit au milieu de l'hexagone puis utilisez la barre d'espace pour enregistrer les couleurs dans la palette.

gpick


Merci, cela fait presque ce que je veux mais ne semble pas montrer les coordonnées des pixels.
Flash

Pourriez-vous également marquer cette question comme terminée?
slashcrack

Non - comme je n'ai toujours pas la réponse :)
Flash

gpick a fière allure, il suffit sudo apt-get install gpickde l'installer
Bloke

6

Cela vous donnera ce que vous voulez, je crois. Certes, c'est quelques étapes mais ça a l'air pire que ça depuis que j'ai montré chaque petite étape.

Installer

Installez ImageMagick & Shutter.

sudo apt-get install imagemagick shutter

Comment obtenir les coordonnées x, y et la couleur

A. Ouvrez Shutter et cliquez sur le bouton de sélection

pic de cliquer sur le bouton de sélection

B. Notez que lorsque vous déplacez votre souris, elle vous montrera les coordonnées x, y que vous recherchez.

entrez la description de l'image ici

Lorsque vous avez le bon endroit, allez-y et cliquez avec le bouton de votre souris et dessinez un carré pour capturer une image. (Peu importe la taille de votre image tant que vous la démarrez (coin supérieur gauche) sur le pixel qui vous intéresse.)

entrez la description de l'image ici

C. Fermez l'image dans l'obturateur

entrez la description de l'image ici

D. Exécutez la commande suivante à partir du terminal. Cela vous donnera les valeurs de couleur du pixel supérieur gauche.

convert ~/Pictures/Selection_001.png -crop 1x1+1+1 txt:- | sed -n 's/.* \(#.*\)/\1/p' 

E. Dans la ligne de commande, continuez et supprimez l'image afin que la prochaine fois que l'obturateur prenne une photo, il lui donne le même nom. (Sinon, vous devrez ajuster le nom à l'étape précédente (D).

rm ~/Pictures/Selection_001.png

Convertir est évidemment la meilleure option, mais je préfère opter pour rgba+ od: askubuntu.com/a/874503/52975
Ciro Santilli 事件 改造 中心 法轮功 六四 事件

6

Collez ce code dans un éditeur de texte, rendez-le exécutable et exécutez-le. Lorsque vous choisissez une couleur avec la pipette, les coordonnées x et y apparaissent en haut.

Modifier : a écrit du code pour ajouter une fenêtre de zoom. Pour le faire saisir des pixels en dehors de la fenêtre, cliquez sur le bouton (pas sur la pipette). Cliquez à nouveau sur le bouton pour arrêter de saisir le pointeur. Je n'ai pas compris comment dessiner un réticule avec le Caire, mais vous pouvez probablement l'utiliser tel quel. J'ai laissé du code du Caire là-dedans au cas où quelqu'un pourrait me dire pourquoi mon rectangle ne dessine pas…

#!/usr/bin/python
from gi.repository import Gtk,Gdk, GdkPixbuf
import cairo

class picker(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        self.connect('delete-event', Gtk.main_quit)
        self.connect('motion-notify-event', self.motion_cb)
        self.connect('button-press-event',self.button_press)
        box=Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)

        #Setup area for coordinates and zoom window
        coordbox=Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        self.xcoor=Gtk.Label("x: ")
        coordbox.pack_start(self.xcoor, True, False, 1)
        self.ycoor=Gtk.Label("y: ")
        coordbox.pack_start(self.ycoor, True, False, 1)
        self.zoomwin=Gtk.Image()
        #Trying to draw on Gtk.Image with cairo for crosshairs... Not working
        self.zoomwin.connect('draw', self.draw) 
        self.zoomwin.set_app_paintable(True)
        coordbox.pack_start(self.zoomwin,True,True,1)
        self.buttongo=Gtk.Button("Pick Color")
        self.buttongo.connect('clicked',self.gobutton_activate)
        coordbox.pack_start(self.buttongo,True,True,1)
        box.pack_start(coordbox, True, False, 5)

        #Put in color wheel for tweaking color
        self.cp=Gtk.ColorSelection()
        self.cp.connect('color-changed', self.on_color_changed)
        box.pack_start(self.cp, True, True, 5)
        self.add(box)
        self.show_all()

        #Set some initial parameters
        self.w,self.h=10,10 #Size of zoomed image in pixels
        self.count=0
        self.window=self.get_window()
        #set initial zoom image
        self.zoomwin.set_from_pixbuf(self.get_image().scale_simple(240,240,GdkPixbuf.InterpType.TILES))
        self.grabbing=False

    def on_color_changed(self,widget=None, data=None):
        #Print out x,y to widgets
        display=Gdk.Display.get_default()
        (screen,x,y,modifier)=display.get_pointer()
        self.xcoor.set_text("x: %i" %x)
        self.ycoor.set_text("y: %i" %y)


    def get_image(self,w=None,h=None):
        #Get a pixbuff image under pointer
        if w==None: w=self.w
        if h==None: h=self.h
        display=Gdk.Display.get_default()
        (screen,self.x,self.y,modifier)=display.get_pointer()
        window=Gdk.get_default_root_window()
        screenshot = Gdk.pixbuf_get_from_window(window,
            self.x-int(w/2), self.y-int(h/2), int(w), int(h))
        return screenshot

    def motion_cb(self, widget, data):
        #What to do while mouse pointer is moving
        #DONT capture every event! Causes too much backup
        if self.count==5:
            self.pixbuf=self.get_image().scale_simple(240,240,GdkPixbuf.InterpType.TILES)
            self.zoomwin.set_from_pixbuf(self.pixbuf)
            self.zoomwin.queue_draw()
            self.count=0
        self.count+=1

    def grab_start(self):
        #Grab control of pointer outside of window
        self.grabbing = True
        Gdk.pointer_grab(self.window, 
                        True, #allow passage of pointer events to children
                        Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK,
                        None,
                        None,# could put a custom cursor here
                        0L)

    def button_press(self,widget,data):
        #capture color under the pointer and set the color selection
        cenpx=self.get_image(1,1)
        color=tuple(map(ord, cenpx.get_pixels()[:3]))
        col=Gdk.RGBA(float(color[0])/256.,float(color[1])/256.,float(color[2])/256.)
        self.cp.set_current_rgba(col)

    def grab_stop(self):
        #Stop Grabbing the pointer
        Gdk.pointer_ungrab(0)
        self.grabbing=False     

    def gobutton_activate(self, widget, data=None):
        #Button control
        if self.grabbing==False:
            self.grab_start()
            widget.set_label("Stop Picking")
        else:
            self.grab_stop()
            widget.set_label("Pick Color")

    def draw(self, widget, cr):
        #this gets called, but nothing is drawn that I can see...
        cr.set_operator(cairo.OPERATOR_SOURCE)
        cr.set_source_rgba(1,1,1,1)
        w = self.w
        h = self.h
        cr.set_source_rgba(1,1,1,1)
        cr.set_line_width(10)
        cr.rectangle(w/2-1,h/2-1,w/2+1,h/2+1)
        cr.stroke()
        cr.set_operator(cairo.OPERATOR_OVER)


if __name__=="__main__":
    win=picker()
    Gtk.main()

1
Bonne réponse. Beaucoup plus simple.
snowguy

1
Je l'ai fait fonctionner - mais je ne vois pas le pixel que je suis sur le point de sélectionner jusqu'à ce que je clique dessus. J'espérais pouvoir agrandir la zone autour du curseur afin que je puisse m'assurer d'obtenir exactement le bon pixel.
Flash

Essayez-le maintenant ... Projet intéressant et j'ai beaucoup appris. J'espère que quelqu'un pourrait m'aider à comprendre pourquoi je ne peux pas dessiner sur la fenêtre de zoom avec le Caire.
Ian

4

Si quelqu'un veut le faire à l'avenir, vous n'avez pas besoin de télécharger quoi que ce soit (certainement pas des centaines de mégaoctets de trucs Windows comme une autre réponse le suggère). Ubuntu propose une solution simple xmag. Xmag fait partie du package x11-apps qui devrait déjà être installé par défaut.

C'est facile. Exécutez xmag, cliquez pour choisir une région de l'écran, puis maintenez enfoncé le bouton de la souris dans la vue agrandie pour voir les coordonnées exactes des pixels.

Capture d'écran de xmag, sans pointer

Vous pouvez lire le manuel xmag en tapant man xmag.


Pour changer le grossissement, utilisez l' -magoption (par défaut 5), par exemple xmag -mag 10pour le faire exploser dix fois.
dessert

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.