画面上のピクセルを簡単に選択し、色と絶対座標を取得するツール


18

画面上の任意のピクセルを選択し、RGBカラーと絶対(x、y)位置を取得できるツールを探しています。

Windowsでツールを使用して、大きな拡大された正方形と十字線を表示し、必要なピクセルを簡単に選択して詳細を取得できるようにしました。

Ubuntuにはこのようなものがありますか?


なぜあなたが一緒にこの特定の組み合わせを探しているのか興味があります...それは私たちが答えを考えるのに役立つかもしれません。なぜx、y座標と色を知りたいのですか?
snowguy

私は、画面上の特定のものを見ることに応じてキーボードとマウスの入力を送信する自動化ツールを書いています。一部の部分は、ウィンドウ内で特定のボタンなどのx、yオフセットを使用することに依存しており、これらのオフセットを正確に見つける簡単な方法が欲しいです。
フラッシュ

これがWeb用で、Firefoxの場合、ColorZillaという拡張機能があります。colorzilla.com/firefox
匿名

アンドリュー、イアンBがあなたが望むことをするツールを書いたように見えます。彼は賞金に値するようです。
スノーガイ

回答:


4

最適なのは... ColorPixと呼ばれる小さなWindowsツール(WINE経由)

長く一生懸命検索した結果、Ubuntu / Linuxで利用できるツールはいずれも、拡大率座標表示の両方の基準を満たしていません。

そこで、重要なことに、デフォルトのWINEインストールで機能する小さなWindowsツールを使用します。構成、インストール、DLLなどは必要ありません。

  • 調整可能なズーム、複数の形式でのワンクリックコピー、および座標表示が特長です。

    ここに画像の説明を入力してください

1. Wineをインストールします

sudo apt-get install wine

(それでおしまい!)

2. ColorPixをダウンロードする

ColorPixは、小さなポータブル600 KB 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、以下を貼り付けてファイルを保存します。

    [デスクトップエントリ]
    名前= ColorPix
    GenericName = ColorPix
    Comment = WINE経由のColorPicker
    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の初期化に数秒かかる場合があります。

以下のスクリーンショットは、それが動作していることを示しています。

  • 上の座標
  • 以下のさまざまな形式の色の値(クリックしてクリップボードにコピー)
  • 下の調整可能な拡大鏡
  • 目的のピクセルに移動したら、任意のキーを押して値をロックします

    ここに画像の説明を入力してください


よく書かれた驚くべき答え-ありがとう!私はイアンBが....彼のかわいいのpythonアプリでいくつかの助けを得る願っていますので、しかし、それは、ワインのダウンロードの胃625メガバイトに難しいです
nealmcb

xmag以下で説明するようにを使用し、座標を取得するピクセル上でマウスボタンを押したままにします。
hackerb9

12

gpickと呼ばれるツールがあります。

ここで、ツールの画像を見ることができます。gpickを使用すると、ピクセルを選択し、HTMLコードを確認し、パレットに色を追加して、色を生成できます。

使用するには、六角形の中央を右クリックし、スペースバーを使用して色をパレットに保存します。

gpick


おかげでこれは私が望んでいることをほとんど行いますが、ピクセル座標を表示しないようです。
フラッシュ

この質問に完了マークを付けてもらえますか?
スラッシュクラック

いいえ-まだ答えがありませんので:)
Flash

gpickが素晴らしく見える、ただそれsudo apt-get install gpickをインストールするだけで
Bloke

6

これにより、あなたが望むものが得られます。確かにそれはいくつかのステップですが、それぞれの小さなステップを示したので、それはそれよりも悪く見えます。

セットアップ

ImageMagick&Shutterをインストールします。

sudo apt-get install imagemagick shutter

X、Y座標と色を取得する方法

A.シャッターを開き、選択ボタンをクリックします

選択ボタンをクリックした写真

B.マウスを動かすと、探しているx、y座標が表示されることに注意してください。

ここに画像の説明を入力してください

適切な場所に移動したら、マウスボタンでクリックして四角形を描き、画像をキャプチャします。(対象のピクセルで開始(左上隅)している限り、イメージの大きさは実際には関係ありません。)

ここに画像の説明を入力してください

C.シャッターで画像を閉じる

ここに画像の説明を入力してください

D.ターミナルから次のコマンドを実行します。これにより、左上のピクセルの色の値が得られます。

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

E.コマンドラインで先に進み、次にシャッターが写真を撮るときに同じ名前を付けるように画像を削除します。(それ以外の場合は、前のステップ(D)で名前を調整する必要があります。

rm ~/Pictures/Selection_001.png

変換は明らかに最適なオプションですが、私はrgba+を選びodます:askubuntu.com/a/874503/52975
Ciro Santilli新疆改造中心法轮功六四事件

6

このコードをテキストエディターに貼り付け、実行可能にして実行します。スポイトで色を選択すると、x座標とy座標が上部に表示されます。

編集:コードを書き、ズームウィンドウを追加します。ウィンドウの外側のピクセルを取得するには、(スポイトではなく)ボタンをクリックします。もう一度ボタンをクリックして、ポインタの取得を停止します。cairoで十字線を描画する方法を理解していませんが、おそらくそのまま使用できます。私の四角形が描画されない理由を誰かが教えてくれるように、カイロコードをそこに残しました…

#!/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
いい答え。もっと簡単です。
スノーガイ

1
動作しました-しかし、クリックするまで選択しようとしているピクセルが表示されません。カーソルの周囲を拡大して、正確に正しいピクセルを取得できるようにしたいと思っていました。
フラッシュ

今すぐ試してみてください...興味深いプロジェクトと私は多くを学びました。誰かがカイロでズームウィンドウに描画できない理由を見つけてくれることを願っています。
イアンB.

4

将来誰かがこれを行いたい場合、何かをダウンロードする必要はありません(別の答えが示唆するように、数百メガバイトのWindowsのものは確かにありません)。Ubuntuに付属する簡単なソリューションはxmagです。Xmagは、デフォルトですでにインストールされているx11-appsパッケージの一部です。

それは簡単です。を実行しxmag、クリックして画面の領域を選択し、拡大表示でマウスボタンを押したままにして、正確なピクセル座標を確認します。

XMAG、Sansポインターのスクリーンショット

を入力すると、xmagのマニュアルを読むことができますman xmag


倍率を変更するには、-magオプション(デフォルトは5)を使用しますxmag -mag 10。たとえば、10倍に拡大します。
デザート

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.