Ekranda kolayca bir piksel seçmek ve renk ve mutlak koordinatlar elde etmek için araç


18

Ekrandaki herhangi bir pikseli seçmeme ve RGB rengini ve mutlak (x, y) konumunu almama izin veren bir araç arıyorum.

Windows'ta, istediğim pikseli kolayca seçebilmeme ve ayrıntılarını almama izin veren büyük artı büyütülmüş bir kare gösteren araçlar kullandım.

Ubuntu için böyle bir şey var mı?


neden bu kombinasyonu birlikte aradığınızı merak ediyorsunuz ... bu bir cevap düşünmemize yardımcı olabilir. neden x, y koordinatlarını ve rengini bilmek istiyorsun?
snowguy

Ekranda belirli şeyleri görmeye yanıt olarak klavye ve fare girişi gönderen bir otomasyon aracı yazıyorum. Bazı bölümler bir pencerenin içinde x, y düğmelerinin vb.
Flash

Bu web içinse ve Firefox iseniz, ColorZilla adlı bir uzantı var. colorzilla.com/firefox
Anonim

Andrew, Ian B'nin tam olarak istediğini yapan bir araç yazdığı anlaşılıyor. Ödül hak ediyor gibi görünüyor.
snowguy

Yanıtlar:


4

En uygun olanı ... ColorPix adlı küçük bir Windows aracı (WINE aracılığıyla)

Uzun ve zor arama yaptıktan sonra, Ubuntu / Linux için mevcut araçların hiçbiri, ölçütlerinizi karşılamıyor, yani büyütme ve koordinat görüntüleme gibi görünmüyor .

Bu yüzden, kritik bir şekilde sadece varsayılan bir WINE kurulumu, hiçbir yapılandırma, kurulum, DLL vb.İle çalışan küçük bir Windows aracı kullanıyoruz .

  • Ayarlanabilir yakınlaştırma, çoklu formatlarda tek tıklamalı kopya ve koordinat gösterimi sunar:

    resim açıklamasını buraya girin

1. Şarap yükleyin

sudo apt-get install wine

(bu kadar!)

2. ColorPix'i indirin

ColorPix resmi olarak burada küçük, taşınabilir bir 600 KB exe olarak indirilebilir

Doğrudan yerel ikili dizininize aşağıdakileri indirmenizi öneririm:

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

3. ColorPix için bir başlatıcı oluşturun

  • Önce bir simge alalım:

    sudo wget -O/usr/share/icons/colorpix.png http://cdn.alternativeto.net/i/22e49edc-efa7-e011-979d-0025902c7e73_11865.png
    
  • Alt+F2Şimdi tuşuna basıp gksudo gedit /usr/share/applications/colorpix.desktopaşağıdakini yazın ve yapıştırın ve dosyayı kaydedin:

    [Masaüstü Girişi]
    Adı = ColorPix
    GenericName = ColorPix
    Yorum = WINE aracılığıyla ColorPicker
    Exec = şarap /usr/local/bin/ColorPix.exe
    Terminal = false
    Simge = / usr / share / icons / colorpix.png
    Tür = Uygulama
    StartupNotify = true
    
  • Bir terminalden şunu çalıştırın:

    sudo chmod +x /usr/share/applications/colorpix.desktop
    
  • Birkaç saniye içinde başlatıcıda şu şekilde kullanılabilir:

    resim açıklamasını buraya girin

4. ColorPix'i kullanma

Başlatın ve ilk kez WINE başlatılırken birkaç saniye sürebilir.

Aşağıdaki ekran görüntüsü, bunu çalışırken gösterir:

  • Üstteki koordinatlar
  • Aşağıdaki farklı biçimlerde renk değerleri (panoya kopyalamak için tıklayın)
  • Aşağıdaki ayarlanabilir büyüteç
  • Değerleri kilitlemek için istediğiniz pikselde herhangi bir tuşa basın

    resim açıklamasını buraya girin


İyi yazılmış, şaşırtıcı bir cevap - teşekkürler! Ama şarap için 625 MB indirme mide zor, bu yüzden Ian B onun sevimli küçük python uygulaması ile bazı yardım alır umuyoruz ....
nealmcb

Sadece xmagaşağıda açıklandığı gibi kullanın ve koordinatlarını istediğiniz pikselin üzerindeki fare düğmesini basılı tutun.
hackerb9

12

Gpick adında bir araç var .

Burada aracın bir görüntüsünü görebilirsiniz. Gpick ile pikselleri seçebilir, HTML kodunu görebilir, palete renk ekleyebilir ve renkler oluşturabilirsiniz.

Bunu kullanmak için altıgenin ortasına sağ tıklayın, ardından renkleri palete kaydetmek için boşluk çubuğunu kullanın.

gpick


Teşekkürler bu neredeyse istediğimi yapıyor ama piksel koordinatlarını göstermiyor gibi görünüyor.
Flash

Bu soruyu tamamlandı olarak da işaretleyebilir misiniz?
slashcrack

Hayır - hala cevabım yok :)
Flash

gpick harika görünüyor, sadece sudo apt-get install gpickkurmak için yapın
Bloke

6

Bu sana istediğini verecek. Kuşkusuz bu birkaç adım ama her küçük adımı gösterdiğimden daha kötü görünüyor.

Kurmak

ImageMagick & Shutter'ı yükleyin.

sudo apt-get install imagemagick shutter

X, Y koordinatları ve rengi nasıl elde edilir

A. Deklanşörü açın ve seçim düğmesine tıklayın

seçim düğmesine tıklama pic

B. Farenizi hareket ettirdiğinizde, aradığınız x, y koordinatlarını göstereceğini unutmayın.

resim açıklamasını buraya girin

Doğru yere sahip olduğunuzda, farenizle tıklayın ve bir görüntü yakalamak için bir kare çizin. (İlgilendiğiniz pikselde (sol üst köşede) başlattığınız sürece görüntünüzün ne kadar büyük olduğu önemli değildir.)

resim açıklamasını buraya girin

C. Deklanşördeki görüntüyü kapatın

resim açıklamasını buraya girin

D. Terminalden aşağıdaki komutu çalıştırın. Bu size sol üst pikselin renk değerlerini verecektir.

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

E. Komut satırındayken devam edin ve görüntüyü silin, böylece bir sonraki deklanşör resim çektiğinde aynı adı verir. (Aksi takdirde, önceki adımda (D) adı ayarlamanız gerekir.

rm ~/Pictures/Selection_001.png

Dönüştürme açıkçası en iyi seçenektir, ancak rgba+ için gitmeyi tercih ederim od: askubuntu.com/a/874503/52975
Ciro Santilli 12

6

Bu kodu bir metin düzenleyicisine yapıştırın, çalıştırılabilir yapın ve çalıştırın. Damlalık ile bir renk seçtiğinizde, üstte x ve y koordinatları görünecektir.

Düzenle : Bir yakınlaştırma penceresi eklemek için kod yazdı. Pencerenin dışındaki pikselleri tutmak için düğmeye (damlalık değil) tıklayın. İşaretçiyi tutmayı durdurmak için düğmeyi tekrar tıklayın. Kahire ile bir artı işaretinin nasıl çizileceğini anlayamadım, ancak muhtemelen olduğu gibi kullanabilirsiniz. Birisi bana dikdörtgenin neden çizmediğini söyleyebilsem bazı kahro kodu bıraktım ...

#!/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
Güzel cevap. Çok daha basit.
snowguy

1
Çalıştı - ama tıklayacağım kadar seçmek üzere olduğum pikseli göremiyorum. Tam olarak doğru pikseli elde ettiğimden emin olabilmem için imlecin etrafındaki alanı büyütmeyi umuyordum.
Flash

Şimdi deneyin ... İlginç bir proje ve ben çok şey öğrendim. Umarım biri neden cairo ile zoom penceresine çizemediğimi anlamama yardımcı olabilir.
Ian B.

4

Gelecekte kimse bunu yapmak istiyorsa, hiçbir şey indirmenize gerek yoktur (başka bir cevabın önerdiği gibi kesinlikle yüzlerce megabayt Windows öğesi değil). Ubuntu ile birlikte gelen basit bir çözümdür xmag. Xmag, varsayılan olarak önceden yüklenmesi gereken x11-apps paketinin bir parçasıdır.

Bu kolay. Çalıştırın xmag, ekranın bir bölgesini seçmek için tıklayın, ardından tam piksel koordinatlarını görmek için büyütülmüş görünümde fare düğmesini basılı tutun.

Xmag, sans pointer ekran görüntüsü

Xmag kılavuzunu yazarak okuyabilirsiniz man xmag.


Büyütmeyi değiştirmek için -mag(varsayılan olarak 5) seçeneğini kullanın , örneğin xmag -mag 10on kez havaya uçurmak için.
tatlı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.