Có một công cụ dòng lệnh trả về giá trị màu của một pixel, chỉ dựa trên tọa độ màn hình của nó .
Có một công cụ như vậy?
(Ngoài ra: Công cụ không nên yêu cầu bất kỳ hành động nào của người dùng. Nó chạy trong một vòng lặp trong tập lệnh.)
Có một công cụ dòng lệnh trả về giá trị màu của một pixel, chỉ dựa trên tọa độ màn hình của nó .
Có một công cụ như vậy?
(Ngoài ra: Công cụ không nên yêu cầu bất kỳ hành động nào của người dùng. Nó chạy trong một vòng lặp trong tập lệnh.)
Câu trả lời:
Bạn có thể sử dụng chương trình lấy . Nó sẽ biến con trỏ chuột của bạn trong một dấu thập và trả về các giá trị HTML và RGB của màu đã chọn.
sudo apt-get install grabc
Nhược điểm: không thể thực hiện các lựa chọn chính xác về pixel do hình chữ thập không đủ mỏng.
Bạn cũng có thể tạo một tập lệnh python, đại loại như:
#!/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]))
làm cho nó có thể thực thi được và chạy pixel_rgb="$(/path/to/script.py x y)"
trong tập lệnh bash của bạn. Tất nhiên, bạn cần thay đổi tập lệnh theo cách bạn cần, thêm một số xử lý lỗi và như vậy.
Tái bút: Tôi không chắc chắn chính xác bạn có thể làm bất cứ điều gì về Khấu hao, vì vậy tôi đã tắt nó ở dòng đầu tiên.
no module named numpy.core.multiarray; Segmentation fault
. Phần nào phụ thuộc vào mô-đun này?
Điều này hơi khó hiểu, nhưng bạn có thể đạt được điều này với xdotool cho phép bạn tương tác với chuột và lấy màu từ vị trí được nhấp trên màn hình.
sudo apt-get install xdotool grabc
Đầu tiên chạy Grabc nhưng nền nó
grabc &
Sau đó thực hiện một mouseclick bằng xdotool
xdotool click 1
Nhấp chuột sẽ được ghi lại bằng con trỏ của Grabc và quá trình nền với màu đầu ra.
xdotool getmouselocation | sed -e 's/x://' -e 's/y://' -e 's/ screen:.*$//'
sẽ lấy các cuộn dây và làm sạch chúng xuống các giá trị xy được phân tách bằng dấu cách để cung cấp cho tập lệnh đó.
xdtool getmouselocation
... rất tốt, cảm ơn ... sự hữu ích của sed chỉ khiến tôi kinh ngạc!
Một giải pháp khác nhau, sử dụng xwd
và xdotool
:
xwd -root -silent | convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:- | grep -om1 '#\w\+'
nơi $X
và $Y
là tọa độ của bạn.
Là một phần của Xorg xwd
nên được cài đặt sẵn trên hệ thống của bạn. xdotool
có thể được cài đặt với:
sudo apt-get install xdotool
Dựa trên câu trả lời của @ Christian trên một câu hỏi và trả lời về StackOverflow và chủ đề fantemagick.org này .
xwd
hỗ trợ việc chụp màn hình của các ID cửa sổ cụ thể, vì vậy bạn có thể truy vấn các ID cửa sổ (ví dụ xdotool search --name "$Win" | head -n1
) và sau đó vượt qua nó để xwd
có xwd -id "$WinID" -silent | ...
. Lưu ý: tọa độ sẽ liên quan đến cửa sổ trong trường hợp này.
Tôi đã viết một mô-đun python cho các hoạt động như thế này, được gọi là Macropolo. Nhưng, nó làm được nhiều việc hơn là chỉ đơn giản là lấy màu của pixel trên màn hình.
Đây là bài viết diễn đàn nơi tôi đã chia sẻ nó: http://ubuntuforums.org/showthread.php?t=2155281
Mô-đun có nhiều chức năng cho phép bạn, ví dụ: đếm số lượng pixel có màu cụ thể trong một khu vực của màn hình, tìm kiếm (các) màu pixel trong khu vực, chờ một pixel hoặc một khu vực của màn hình có một cụ thể màu sắc, đợi màu pixel và chạy một số chức năng khác trong khi chờ đợi (ví dụ: di chuyển con trỏ vì không để màn hình tắt trong khi bạn chờ đợi một màu cụ thể).
Nhưng, như tôi đã nói, nó còn làm được nhiều thứ hơn, như mô phỏng nhấp chuột và bàn phím, chụp màn hình chiếm diện tích màn hình và hơn thế nữa.