画面座標に基づいてピクセルの色を返すコマンドラインツールはありますか?


11

コマンドラインツールは、画面の座標のみに基づいて、ピクセルのカラー値を返しますか。

そのようなツールはありますか?

(また、このツールはユーザーの操作を必要とするものではありません。スクリプトのループで実行するためのものです。)


回答:


14

プログラムgrabcを使用できます。マウスポインターを十字線にして、選択した色のHTML値とRGB値を返します。

sudo apt-get install grabc

欠点:十字線が十分に細くないため、ピクセル単位の選択を行うことはできません。


次のようなpythonスクリプトを作成することもできます。

#!/usr/bin/python -W ignore::DeprecationWarning
import sys
import gtk

def get_pixel_rgb(x, y):
    pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, 1, 1)
    pixbuf.get_from_drawable(gtk.gdk.get_default_root_window(),
                             gtk.gdk.colormap_get_system(), 
                             x, y, 0, 0, 1, 1)
    return pixbuf.get_pixels_array()[0][0]

print get_pixel_rgb(int(sys.argv[1]), int(sys.argv[2]))

実行可能にpixel_rgb="$(/path/to/script.py x y)"して、bashスクリプトで実行します。もちろん、必要に応じてスクリプトを変更したり、エラー処理を追加したりする必要があります。

PS:DeprecationWarningについて何でもできるかどうかは正確ではないので、最初の行でオフにしました。


htorqueに感謝しますが、重要な要件を省略していることに再び気付いたので、バッチスクリプトのループで自律的に実行したいと思います。この小さなアプリのヘッドアップに感謝します。それは間違いなくいつか重宝します..(「無人」で実行される私の現在の結論ではありません)
Peter.O

htorque:あなたのPythonスクリプトは、私の修正された仕様(典型的なユーザー!常に仕様を変更する!)に完全に適合します...座標で直接作業することは、私の「ピクセルパターンを見つける」手順にとってはるかに優れています...次に、カーソルをxmacroで見つけたばかりの座標に移動し、右クリックしてxmacroを実行します。目標通りに....簡単!(Pythonistasの場合:)
Peter.O

取得していno module named numpy.core.multiarray; Segmentation faultます。このモジュールに依存しているのはどの部分ですか?
ドリュー

6

これは少し不器用ですが、マウスで操作できるxdotoolと、画面でクリックした場所から色を取得するgrabcでこれを実現できます。

sudo apt-get install xdotool grabc

最初にgrabcを実行しますが、バックグラウンドで実行します

grabc &

次に、xdotoolを使用してマウスクリックを実行します

xdotool click 1

クリックはgrabcのカーソルとバックグラウンドプロセスによってキャプチャされ、色が出力されます。


興味深い、misterben ..「無愛想」は大丈夫です;)私は最近、格言を聞きました。「黒い猫、白い猫、ぶち猫..マウスを捕まえる限り」...しかし、マクロツールの情報ページの1つでピクセルについて何かを見たのを漠然と覚えています(ただし、座標のみに関するものでした) ...画面全体のピクセルの行を照会したいのですが、grabcによるカーソルの切り替えを回避したいのですが、「grabc」が動作しているのを見てきました。座標に基づく色(これはWindowsでかなり頻繁に行いました:( ... Linuxでも同様のことを願っています:)
Peter.O

xdotoolを使用してポインター座標を取得し、htorqueのpythonスクリプトでそれらを使用できます。xdotool getmouselocation | sed -e 's/x://' -e 's/y://' -e 's/ screen:.*$//'コードを取得し、スペースで区切られたxy値にクリーンアップして、そのスクリプトにフィードします。
misterben 2010

ミスターベン、あなたの助けのおかげで、私は背景についてもっと学びました(とても便利です)...私が最初に質問したときにそれを知りませんでしたが、「座標で色を取得する」方法は行く方法である。
Peter.O

私はちょうどあなたを試してみることにしましたxdtool getmouselocation...とても素敵です、ありがとう... sedの有用性は私を驚かせ続けます!
Peter.O

3

xwdおよびを使用した別のソリューションxdotool

xwd -root -silent | convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:- | grep -om1 '#\w\+'

どこ$X$Yあなたの座標です。

Xorgの一部としてxwd、システムにプリインストールされているはずです。xdotool以下でインストールできます:

sudo apt-get install xdotool 

クリスチャンの@に基づいてStackOverflowのQ&Aに答え、このimagemagick.orgスレッド


おかげで動作しますが、htorqueのpythonスクリプト(実際の0.097秒のユーザー0.072秒のシステム0.020秒)よりもはるかに遅い(実際の0.363秒のユーザー0.456秒sys 0.064秒)。
Peter.O 2014

@ Peter.Oはい。ただし、Pythonとインポートされたライブラリがすでにメモリにキャッシュされている場合にのみ当てはまります。コールドスタートでは、Pythonスクリプトが大幅に遅くなります。したがって、スクリプトがたまにしか実行されない場合は、私のソリューションを使用することをお勧めします。PS:検査したいウィンドウがわかっている場合は、速度を上げることができます。xwdあなたは、ウィンドウのID(例を照会できるよう支持体は、特定のウィンドウIDのスクリーンショットを取るxdotool search --name "$Win" | head -n1)し、その後にそれを渡すxwdxwd -id "$WinID" -silent | ...。注:この場合、座標はウィンドウを基準とします。
グルタニメート2014

2

Macropoloと呼ばれる、このような操作のためのpythonモジュールを作成しました。ただし、画面上のピクセルの色を取得するだけではありません。

これが私が共有したフォーラムの投稿です:http : //ubuntuforums.org/showthread.php?t=2155281

このモジュールには多くの機能があり、たとえば、画面の領域で特定の色を持つピクセルの数を数えたり、領域でピクセルの色を検索したり、ピクセルまたは画面の領域に特定の色が出るのを待つことができます。色、ピクセルの色を待ち、待ちながら他の機能を実行します(たとえば、特定の色を待つ間、画面をオフにしないためにカーソルを移動します)。

しかし、先ほど述べたように、マウスクリックやキーボードのシミュレーション、画面領域のスクリーンショットの取得など、多くのことを行います。

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