क्या एक कमांड-लाइन टूल एक पिक्सेल का रंग मूल्य देता है, जो पूरी तरह से इसके स्क्रीन को-ऑर्डिनेट पर आधारित है ।
क्या ऐसा कोई उपकरण है?
(इसके अलावा: टूल को किसी उपयोगकर्ता कार्रवाई की आवश्यकता नहीं होनी चाहिए। यह एक स्क्रिप्ट में लूप में चलना है।)
क्या एक कमांड-लाइन टूल एक पिक्सेल का रंग मूल्य देता है, जो पूरी तरह से इसके स्क्रीन को-ऑर्डिनेट पर आधारित है ।
क्या ऐसा कोई उपकरण है?
(इसके अलावा: टूल को किसी उपयोगकर्ता कार्रवाई की आवश्यकता नहीं होनी चाहिए। यह एक स्क्रिप्ट में लूप में चलना है।)
जवाबों:
आप प्रोग्राम हड़पने का उपयोग कर सकते हैं । यह आपके माउस पॉइंटर को एक क्रॉसहेयर में बदल देगा और चयनित रंग के HTML और RGB मान लौटाएगा।
sudo apt-get install grabc
डाउनसाइड: क्रॉसहेयर के काफी पतले न होने के कारण पिक्सेल-सटीक चयन करना संभव नहीं है।
आप एक अजगर स्क्रिप्ट भी बना सकते हैं, जैसे कुछ:
#!/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)"
अपनी बैश स्क्रिप्ट में चलाएं । बेशक आपको स्क्रिप्ट को अपनी ज़रूरत के हिसाब से बदलने की ज़रूरत होगी, कुछ त्रुटि से निपटने और इस तरह से जोड़ें।
पुनश्च: मुझे पूरी तरह से यकीन नहीं है कि आप डिप्रेक्शन वर्निंग के बारे में कुछ भी कर सकते हैं, इसलिए मैंने इसे पहली पंक्ति में बंद कर दिया।
no module named numpy.core.multiarray; Segmentation fault
। कौन सा भाग इस मॉड्यूल पर निर्भर है?
यह थोडा अव्यवस्थित है, लेकिन आप इसे xdotool के साथ प्राप्त कर सकते हैं जो आपको माउस के साथ इंटरैक्ट करने देता है, और जकड़ लेता है जो स्क्रीन पर क्लिक किए गए स्थान से रंग प्राप्त करता है।
sudo apt-get install xdotool grabc
पहले पकड़ो पकड़ो लेकिन यह पृष्ठभूमि
grabc &
फिर xdotool का उपयोग करके एक मूसलीक प्रदर्शन करें
xdotool click 1
क्लिक को कैप्चर के कर्सर और आउटपुट के साथ पृष्ठभूमि प्रक्रिया द्वारा कैप्चर किया जाएगा।
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
@ StackOverflow Q & A पर ईसाई का उत्तर और इस imagemagick.org धागे पर आधारित है ।
xwd
का समर्थन करता है, विशिष्ट विंडो आईडी की स्क्रीनशॉट ले ताकि आप विंडो आईडी (उदाहरण के लिए क्वेरी सकता है xdotool search --name "$Win" | head -n1
) और फिर इसे पारित xwd
साथ xwd -id "$WinID" -silent | ...
। नोट: निर्देशांक इस मामले में खिड़की के सापेक्ष होंगे।
मैंने इस तरह के संचालन के लिए एक अजगर मॉड्यूल लिखा है, जिसे मैक्रोपोलो कहा जाता है। लेकिन, यह केवल स्क्रीन पर पिक्सेल का रंग प्राप्त करने की तुलना में बहुत अधिक चीजें करता है।
यहाँ मंच पोस्ट है जहाँ मैंने इसे साझा किया है: http://ubuntuforums.org/showthread.php?t=2155281
मॉड्यूल में कई कार्य हैं जो आपको उदाहरण के लिए स्क्रीन के एक क्षेत्र में एक विशिष्ट रंग वाले पिक्सेल की मात्रा की गणना करने की अनुमति देते हैं, क्षेत्र में पिक्सेल रंग (ओं) की खोज करते हैं, पिक्सेल के लिए प्रतीक्षा करते हैं या स्क्रीन के एक क्षेत्र में एक विशिष्ट है रंग, पिक्सेल रंग के लिए प्रतीक्षा करें और प्रतीक्षा करते समय कुछ अन्य फ़ंक्शन चलाएं (जैसे कि किसी विशिष्ट रंग की प्रतीक्षा करते समय स्क्रीन को बंद न होने देने के लिए कर्सर को स्थानांतरित करें)।
लेकिन, जैसा कि मैंने कहा, यह और भी बहुत कुछ करता है, जैसे माउस क्लिक और कीबोर्ड, स्क्रीन के क्षेत्र का स्क्रीनशॉट लेना और बहुत कुछ।