Инструмент для простого выбора пикселя на экране и получения цветовых и абсолютных координат

16

Я ищу инструмент, который позволяет мне выбирать любой пиксель на экране и получать его цвет RGB и абсолютное (x, y) местоположение.

Я использовал инструменты в Windows, которые показывают большой увеличенный квадрат с перекрестием, позволяя мне легко выбрать пиксель, который я хочу, и получить его детали.

Есть ли что-нибудь подобное для ubuntu?

    
задан Flash 15.07.2012 в 09:48
источник

6 ответов

4

Лучшая подгонка ... крошечный инструмент Windows под названием ColorPix (через WINE)

После долгого поиска трудно обнаружить, что ни один из доступных инструментов для Ubuntu / Linux не соответствует вашим критериям, т. е. увеличение и отображение координат .

Итак, мы ищем крошечный инструмент Windows, который - критически - работает только с установкой по умолчанию WINE, не требует настройки, установки, DLL и т. д.

  • Он имеет настраиваемый масштаб, копирование одним кликом в нескольких форматах и ​​координатный дисплей:

1. Установить Wine

sudo apt-get install wine

(вот и все!)

2. Загрузите ColorPix

ColorPix можно официально загрузить как маленький, портативный 600KB exe here

Я предлагаю загрузить непосредственно в каталог локальных двоичных файлов с помощью

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

3. Создайте пусковую установку для ColorPix

  • Сначала получим значок:

    sudo wget -O/usr/share/icons/colorpix.png http://cdn.alternativeto.net/i/22e49edc-efa7-e011-979d-0025902c7e73_11865.png
    
  • Нажмите Alt+F2 сейчас и введите gksudo gedit /usr/share/applications/colorpix.desktop , и вставьте ниже и сохраните файл:

    [Desktop Entry]
    Name=ColorPix
    GenericName=ColorPix
    Comment=ColorPicker via WINE
    Exec=wine /usr/local/bin/ColorPix.exe
    Terminal=false
    Icon=/usr/share/icons/colorpix.png
    Type=Application
    StartupNotify=true
    
  • От терминала выполните:

    sudo chmod +x /usr/share/applications/colorpix.desktop
    
  • Через несколько секунд он будет доступен в панели запуска:

4. Использование ColorPix

Запустите его, и в первый раз это может занять несколько секунд, пока инициализирует WINE.

Снимок экрана ниже показывает его действие:

  • Координаты в верхней части
  • Значения цвета в разных форматах ниже (нажмите, чтобы скопировать в буфер обмена)
  • Регулируемая лупа ниже
  • Нажмите любую клавишу, когда вы на нужный пиксель, чтобы заблокировать значения

ответ дан izx 28.07.2012 в 15:14
источник
10

Существует инструмент под названием gpick .

Здесь вы можете увидеть изображение инструмента. С помощью gpick вы можете выбирать пиксели, видеть код HTML, добавлять цвета в палитру и генерировать цвета.

    
ответ дан slashcrack 15.07.2012 в 10:04
6

Это даст вам то, что вы хотите, я верю. По общему признанию, это несколько шагов, но он выглядит хуже, чем с тех пор, как я показал каждый маленький шаг.

Настройка

Установить ImageMagick & amp; Затвор.

sudo apt-get install imagemagick shutter

Как получить координаты x, y и цвет

а. Откройте «Затвор» и нажмите кнопку выбора

В. Обратите внимание, что, двигая мышью, вы увидите координаты x, y, которые вы ищете.

Когда у вас есть подходящее место, нажмите кнопку мыши и нарисуйте квадрат для захвата изображения. (На самом деле не имеет значения, насколько велико ваш образ, пока вы его начинаете (верхний левый угол) на интересующем пикселе.)

С. Закройте изображение в затворе

Д. Выполните следующую команду с терминала. Это даст вам значения цвета верхнего левого пикселя.

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

Е. Если в командной строке идти вперед и удалять изображение, чтобы следующий затвор затвора делал снимок, он дает одно и то же имя. (В противном случае вам нужно будет отрегулировать имя на предыдущем шаге (D).

rm ~/Pictures/Selection_001.png
    
ответ дан snowguy 23.07.2012 в 22:02
6

Вставьте этот код в текстовый редактор, сделайте его исполняемым и запустите. Когда вы выбираете цвет с пипеткой, координаты x и y будут отображаться вверху. EDIT: Созданный код для добавления окна масштабирования. Чтобы захватить пиксели за пределами окна, нажмите кнопку (не пипетка). Нажмите кнопку еще раз, чтобы остановить захват указателя. Не поняли, как нарисовать перекрестие с каиром, но вы, вероятно, можете использовать как есть. Я оставил там код каира, если кто-то скажет мне, почему мой прямоугольник не рисует ...

#!/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()
    
ответ дан Ian B. 24.07.2012 в 18:26
3

Если кто-то захочет сделать это в будущем, вам не нужно ничего скачивать (конечно, не сотни мегабайт Windows, как предлагает другой ответ). Простым решением Ubuntu является xmag . Xmag является частью пакета x11-apps, который должен быть установлен по умолчанию.

Это легко. Запустите xmag , нажмите, чтобы выбрать область экрана, затем нажмите и удерживайте кнопку мыши в увеличенном виде, чтобы увидеть точные координаты пикселей.

Вы можете прочитать руководство xmag, набрав man xmag .

    
ответ дан hackerb9 27.09.2017 в 03:35
0

Попробуйте imview , он показывает координаты.

Вы можете загрузить страницу Doc и здесь .

    
ответ дан atenz 22.07.2012 в 06:49