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

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

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

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

18
задан 15 July 2012 в 13:48

6 ответов

Лучшее соответствие является... крошечным инструментом Windows под названием ColorPix (через ВИНО)

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

Таким образом, мы идем для крошечного инструмента Windows, который - критически - просто работает с ВИННОЙ установкой по умолчанию, никакой конфигурацией, установкой, DLLs, и т.д. необходимым.

  • Это показывает корректируемое масштабирование, копию с одним щелчком в нескольких форматах и координационном дисплее:

    enter image description here

1. Вино установки

sudo apt-get install wine

(вот именно!)

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

ColorPix может быть официально загружен как крошечные, портативные 600 КБ exe здесь

Я предлагаю загрузить непосредственно на Ваш локальный двоичный каталог с:

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
    
  • Через несколько секунд это будет доступно в средстве запуска как:

    enter image description here

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

Запустите его, и в самый первый раз, когда может потребоваться несколько секунд, в то время как ВИНО инициализирует.

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

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

    enter image description here

4
ответ дан 15 July 2012 в 13:48

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

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

Screenshot of xmag, sans pointer

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

0
ответ дан 15 July 2012 в 13:48

Вставьте этот код в текстовый редактор, сделайте его исполняемым файлом и выполните его. При выборе цвета с глазной пипеткой координаты X и Y появятся наверху.

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

#!/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()
6
ответ дан 15 July 2012 в 13:48

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

Настройка

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

sudo apt-get install imagemagick shutter

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

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

pic of clicking selection button

B. Обратите внимание, что при наведении курсора на нее будут отображаться координаты x, y, которые вы ищете.

enter image description here

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

enter image description here

C , Закройте изображение в шторке

enter image description here

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

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

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

rm ~/Pictures/Selection_001.png
0
ответ дан 15 July 2012 в 13:48

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

enter image description here

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

0
ответ дан 15 July 2012 в 13:48

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

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

Чтобы использовать его, щелкните правой кнопкой мыши середину шестиугольника, затем используйте пробел, чтобы сохранить цвета в палитре.

gpick

0
ответ дан 15 July 2012 в 13:48

Другие вопросы по тегам:

Похожие вопросы: