web-dev-qa-db-ja.com

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

screen coordinatesのみに基づいて、ピクセルのカラー値を返すコマンドラインツールはありますか?.

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

(また、このツールはユーザーのアクションを必要としません。スクリプトのループで実行することです。)

10
Peter.O

プログラム 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]))

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

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

12
htorque

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

Sudo apt-get install xdotool grabc

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

grabc &

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

xdotool click 1

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

5
misterben

xwdxdotoolを使用した別のソリューション:

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 

@Christianの StackOverflowのQ&Aに関する回答 および このimagemagick.orgスレッド に基づきます。

2
Glutanimate

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

ここに私がそれを共有したフォーラム投稿があります: http://ubuntuforums.org/showthread.php?t=2155281

モジュールには、たとえば画面の領域内の特定の色を持つピクセルの数をカウントし、領域内のピクセルの色を検索し、画面のピクセルまたは領域が特定の色を持つのを待ち、ピクセルの色を待ち、他の何かを実行する待機中の機能(たとえば、特定の色を待機しているときに画面をオフにしないためにカーソルを移動します)。

しかし、私が言ったように、マウスクリックやキーボードのシミュレーション、スクリーンの面積のスクリーンショット撮影など、もっと多くのことをします。

2
hytromo