Komut satırı aracı, yalnızca ekran koordinatlarına dayanarak bir pikselin renk değerini döndürür .
Böyle bir araç var mı?
(Ayrıca: Araç herhangi bir kullanıcı eylemi gerektirmemelidir. Bir komut dosyasında bir döngü içinde çalıştırmaktır.)
Komut satırı aracı, yalnızca ekran koordinatlarına dayanarak bir pikselin renk değerini döndürür .
Böyle bir araç var mı?
(Ayrıca: Araç herhangi bir kullanıcı eylemi gerektirmemelidir. Bir komut dosyasında bir döngü içinde çalıştırmaktır.)
Yanıtlar:
Grabc programını kullanabilirsiniz . Fare işaretçinizi artı işaretine çevirir ve seçilen rengin HTML ve RGB değerlerini döndürür.
sudo apt-get install grabc
Dezavantajı: artı işaretinin yeterince ince olmaması nedeniyle piksel kesin seçimler yapmak mümkün değildir.
Ayrıca aşağıdaki gibi bir python betiği de oluşturabilirsiniz:
#!/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]))
çalıştırılabilir pixel_rgb="$(/path/to/script.py x y)"
yapın ve bash komut dosyanızda çalıştırın . Elbette komut dosyasını ihtiyacınız olan şekilde değiştirmeniz, bazı hata işlemeleri vb. Eklemeniz gerekir.
PS: DeprecationWarning hakkında bir şey yapabileceğinizden tam olarak emin değilim, bu yüzden ilk satırda kapattım.
no module named numpy.core.multiarray; Segmentation fault
. Hangi parça bu modüle bağlıdır?
Bu biraz kurnaz, ancak bunu fareyle etkileşime girmenizi sağlayan xdotool ve ekranda tıklanan bir konumdan rengi alan grabc ile başarabilirsiniz.
sudo apt-get install xdotool grabc
İlk çalıştırmak grabc ama arka plan
grabc &
Sonra xdotool kullanarak bir fare tıklaması yapın
xdotool click 1
Tıklama grabc imleci ve renk çıktısı ile arka plan işlemi tarafından yakalanacaktır.
xdotool getmouselocation | sed -e 's/x://' -e 's/y://' -e 's/ screen:.*$//'
koordinatları yakalar ve bu betiğe beslemek için boşlukla ayrılmış xy değerlerine kadar temizler.
xdtool getmouselocation
... çok güzel, teşekkürler ... sed'in kullanışlılığı sadece şaşırtıcı beni devam ediyor!
Bulunan farklı bir çözümde, kullanılarak xwd
ve xdotool
:
xwd -root -silent | convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:- | grep -om1 '#\w\+'
nerede $X
ve $Y
koordinatlarınız.
Xorg'un bir parçası olarak xwd
sisteminize önceden yüklenmiş olarak gelmelidir. xdotool
ile kurulabilir:
sudo apt-get install xdotool
@ Christian'ın StackOverflow Soru-Cevap ve bu imagemagick.org iş parçacığındaki cevabı temel alınmıştır .
xwd
Eğer pencere kimliği (örn sorgulamak böylece destekler, belirli pencere kimlikleri ekran görüntülerini alarak xdotool search --name "$Win" | head -n1
) ve daha sonra onu geçmek xwd
ile xwd -id "$WinID" -silent | ...
. Not: Bu durumda koordinatlar pencereye görecelidir.
Macropolo adında bu gibi işlemler için bir python modülü yazdım. Ancak, ekranda bir pikselin rengini almaktan çok daha fazla şey yapar.
İşte paylaştığım forum gönderisi: http://ubuntuforums.org/showthread.php?t=2155281
Modül, örneğin ekranın bir alanında belirli bir renge sahip piksel sayısını saymanıza, alanda piksel renk (ler) ini aramanıza, bir pikselin veya ekranın belirli bir alanının belirli bir alana sahip olmasını beklemenize izin veren birçok işleve sahiptir. renk, piksel rengini bekleyin ve beklerken başka bir işlev çalıştırın (örneğin, belirli bir rengi beklerken ekranın kapanmasına izin vermemek için imleci hareket ettirin).
Ancak, dediğim gibi, fare tıklamaları ve klavyeyi simüle etmek, ekranın ekran alanını almak ve daha fazlası gibi çok daha fazla şey yapıyor.