Werkzeug zum einfachen Auswählen eines Pixels auf dem Bildschirm und zum Abrufen von Farbe und absoluten Koordinaten


18

Ich suche ein Tool, mit dem ich ein beliebiges Pixel auf dem Bildschirm auswählen und dessen RGB-Farbe und absolute (x, y) Position ermitteln kann.

Unter Windows habe ich Tools verwendet, die ein großes, vergrößertes Quadrat mit einem Fadenkreuz anzeigen, sodass ich einfach das gewünschte Pixel auswählen und dessen Details abrufen kann.

Gibt es so etwas für Ubuntu?


Nur neugierig, warum Sie nach dieser bestimmten Kombination zusammen suchen ... das kann uns helfen, eine Antwort zu finden. warum willst du die x, y Koordinaten und die Farbe wissen?
Snowguy

Ich schreibe ein Automatisierungstool, das Tastatur- und Mauseingaben sendet, wenn bestimmte Dinge auf dem Bildschirm angezeigt werden. Einige Teile hängen von der Verwendung von x, y Versätzen bestimmter Schaltflächen usw. in einem Fenster ab, und ich möchte einen einfachen Weg, um diese Versätze genau zu finden.
Flash

Wenn dies für das Web ist und Sie Firefox sind, gibt es eine Erweiterung namens ColorZilla. colorzilla.com/firefox
Anonym

Andrew, Ian B hat anscheinend ein Tool geschrieben, das genau das tut, was Sie wollen. Scheint, als hätte er das Kopfgeld verdient.
Snowguy

Antworten:


4

Am besten passt ... ein kleines Windows-Tool namens ColorPix (über WINE)

Nachdem Sie lange und intensiv gesucht haben, scheint keines der verfügbaren Tools für Ubuntu / Linux beide Kriterien zu erfüllen, dh Vergrößerung und Koordinatenanzeige .

Wir entscheiden uns für ein kleines Windows-Tool, das - kritisch gesehen - nur mit einer Standard-WINE-Installation funktioniert, ohne dass Konfiguration, Installation, DLLs usw. erforderlich sind.

  • Es verfügt über einstellbaren Zoom, Ein-Klick-Kopie in mehreren Formaten und Koordinatenanzeige:

    Bildbeschreibung hier eingeben

1. Installieren Sie Wine

sudo apt-get install wine

(das ist es!)

2. Laden Sie ColorPix herunter

ColorPix kann hier offiziell als winzige, tragbare 600KB- Datei heruntergeladen werden

Ich empfehle das Herunterladen direkt in Ihr lokales Binärverzeichnis mit:

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

3. Erstellen Sie einen Starter für ColorPix

  • Lassen Sie uns zuerst ein Symbol bekommen:

    sudo wget -O/usr/share/icons/colorpix.png http://cdn.alternativeto.net/i/22e49edc-efa7-e011-979d-0025902c7e73_11865.png
    
  • Drücken Sie Alt+F2jetzt und geben Sie gksudo gedit /usr/share/applications/colorpix.desktopFolgendes ein, fügen Sie das Folgende ein und speichern Sie die Datei:

    [Desktop Eintrag]
    Name = ColorPix
    GenericName = ColorPix
    Kommentar = ColorPicker über WINE
    Exec = wine /usr/local/bin/ColorPix.exe
    Terminal = false
    Icon = / usr / share / icons / colorpix.png
    Typ = Anwendung
    StartupNotify = true
    
  • Führen Sie an einem Terminal Folgendes aus:

    sudo chmod +x /usr/share/applications/colorpix.desktop
    
  • In wenigen Sekunden ist es im Launcher verfügbar als:

    Bildbeschreibung hier eingeben

4. Verwenden von ColorPix

Starten Sie es und das erste Mal kann es einige Sekunden dauern, während WINE initialisiert wird.

Der Screenshot unten zeigt es in Aktion, mit:

  • Die Koordinaten oben
  • Farbwerte in verschiedenen Formaten unten (zum Kopieren in die Zwischenablage klicken)
  • Einstellbare Lupe unten
  • Drücken Sie eine beliebige Taste, sobald Sie sich auf dem gewünschten Pixel befinden, um die Werte zu speichern

    Bildbeschreibung hier eingeben


Gut geschriebene, überraschende Antwort - danke! Aber es ist schwer, 625 MB Download für Wein zu
ertragen

Verwenden Sie einfach xmag, wie unten beschrieben, und halten Sie die Maustaste auf dem Pixel gedrückt, dessen Koordinaten Sie möchten.
Hackerb9

12

Es gibt ein Tool namens gpick .

Hier sehen Sie ein Bild des Tools. Mit gpick können Sie Pixel auswählen, den HTML-Code anzeigen, Farben zur Palette hinzufügen und Farben generieren.

Klicken Sie dazu mit der rechten Maustaste in die Mitte des Sechsecks und speichern Sie die Farben mit der Leertaste in der Palette.

gpick


Vielen Dank, dies macht fast das, was ich will, aber es scheint, dass die Pixelkoordinaten nicht angezeigt werden.
Flash

Könnten Sie diese Frage auch als erledigt markieren?
Slashcrack

Nein - da ich immer noch keine Antwort habe :)
Flash

gpick sieht gut aus, einfach sudo apt-get install gpickinstallieren
Bloke

6

Das bringt dir, was du willst, glaube ich. Zugegeben, es sind ein paar Schritte, aber es sieht schlimmer aus als es ist, da ich jeden kleinen Schritt gezeigt habe.

Installieren

Installieren Sie ImageMagick & Shutter.

sudo apt-get install imagemagick shutter

Wie man die x, y Koordinaten und die Farbe erhält

A. Öffnen Sie den Shutter und klicken Sie auf die Auswahlschaltfläche

Bild des Klickens auf die Auswahlschaltfläche

B. Beachten Sie, dass beim Bewegen der Maus die gesuchten x, y-Koordinaten angezeigt werden.

Bildbeschreibung hier eingeben

Wenn Sie die richtige Stelle gefunden haben, klicken Sie mit der Maus und zeichnen Sie ein Quadrat, um ein Bild aufzunehmen. (Es spielt keine Rolle, wie groß Ihr Bild ist, solange Sie es (in der oberen linken Ecke) auf dem gewünschten Pixel starten.)

Bildbeschreibung hier eingeben

C. Schließen Sie das Bild mit dem Auslöser

Bildbeschreibung hier eingeben

D. Führen Sie den folgenden Befehl vom Terminal aus. Dies gibt Ihnen die Farbwerte des oberen linken Pixels.

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

E. Wenn Sie sich in der Befehlszeile befinden, löschen Sie das Bild, damit es bei der nächsten Aufnahme den gleichen Namen erhält. (Andernfalls müssen Sie den Namen im vorherigen Schritt anpassen (D).

rm ~/Pictures/Selection_001.png

Konvertieren ist natürlich die beste Option, aber ich würde mich lieber für rgba+ entscheiden od: askubuntu.com/a/874503/52975
Ciro Santilli Am

6

Fügen Sie diesen Code in einen Texteditor ein, machen Sie ihn ausführbar und führen Sie ihn aus. Wenn Sie mit der Pipette eine Farbe auswählen, werden die x- und y-Koordinaten oben angezeigt.

Bearbeiten : Code geschrieben, um ein Zoomfenster hinzuzufügen. Um Pixel außerhalb des Fensters zu erfassen, klicken Sie auf die Schaltfläche (nicht auf die Pipette). Klicken Sie erneut auf die Schaltfläche, um den Zeiger nicht mehr zu halten. Ich habe noch nicht herausgefunden, wie man ein Fadenkreuz mit Cairo zeichnet, aber Sie können es wahrscheinlich so verwenden, wie es ist. Ich habe dort einen Kairo-Code hinterlassen, falls mir jemand sagen kann, warum mein Rechteck nicht zeichnet ...

#!/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
Gute Antwort. Viel einfacher.
Snowguy

1
Es hat funktioniert - aber ich kann das Pixel, das ich auswählen möchte, erst sehen, nachdem ich darauf geklickt habe. Ich hatte gehofft, den Bereich um den Cursor vergrößern zu können, damit ich sicherstellen kann, dass ich genau das richtige Pixel erhalte.
Flash

Probieren Sie es jetzt aus ... Interessantes Projekt und ich habe viel gelernt. Ich hoffe, jemand kann mir helfen, herauszufinden, warum ich mit cairo nicht im Zoomfenster zeichnen kann.
Ian B.

4

Wenn irgendjemand dies in Zukunft tun möchte, muss nichts heruntergeladen werden (sicherlich nicht Hunderte von Megabyte Windows-Dateien, wie eine andere Antwort nahelegt). Eine einfache Lösung, mit der Ubuntu geliefert wird, ist xmag. Xmag ist Teil des Pakets x11-apps, das standardmäßig bereits installiert sein sollte.

Es ist einfach. Führen Sie aus xmag, klicken Sie, um einen Bereich des Bildschirms auszuwählen, und halten Sie die Maustaste in der vergrößerten Ansicht gedrückt, um die genauen Pixelkoordinaten anzuzeigen.

Screenshot von xmag, sans pointer

Sie können das xmag-Handbuch lesen, indem Sie Folgendes eingeben man xmag.


Um die Vergrößerung zu ändern, verwenden Sie die -magOption (Standardeinstellung 5), z. B. xmag -mag 10um sie zehnmal zu vergrößern.
Dessert

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.