Answers:
您可以使用程序grapc。它将使您的鼠标指针变成十字准线,并返回所选颜色的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做任何事情,因此我在第一行中将其关闭。
no module named numpy.core.multiarray; Segmentation fault
。哪一部分取决于此模块?
这有点笨拙,但是您可以使用xdotool来实现此目的,它允许您与鼠标进行交互,而grapc则可以从单击屏幕的位置获取颜色。
sudo apt-get install xdotool grabc
第一次运行grapc,但有背景
grabc &
然后使用xdotool执行mouseclick
xdotool click 1
点击将被grapc的光标捕获,并通过背景处理输出颜色。
xdotool getmouselocation | sed -e 's/x://' -e 's/y://' -e 's/ screen:.*$//'
将抓取坐标并将其清理为空格分隔的xy值,以馈入该脚本。
xdtool getmouselocation
...,非常好,谢谢... sed的实用性一直让我赞叹不已!
另一种解决方案,使用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
xwd
支持拍摄特定窗口ID的屏幕截图,因此您可以查询窗口ID(例如xdotool search --name "$Win" | head -n1
),然后将其传递给xwd
with xwd -id "$WinID" -silent | ...
。注意:在这种情况下,坐标将相对于窗口。
我已经为此类操作编写了python模块,称为Macropolo。但是,它所做的事情远不止简单地获取屏幕上像素的颜色。
这是我分享它的论坛帖子:http : //ubuntuforums.org/showthread.php?t=2155281
该模块具有许多功能,例如,允许您计算屏幕区域中具有特定颜色的像素数量,搜索区域中的像素颜色,等待屏幕中具有特定颜色的像素或区域颜色,等待像素颜色并在等待时运行其他功能(例如,在等待特定颜色时移动光标以免屏幕关闭)。
但是,正如我所说,它还有很多其他功能,例如模拟鼠标点击和键盘,截取屏幕区域的屏幕截图等等。