क्या कोई कमांड-लाइन टूल है जो स्क्रीन के सह-निर्देश के आधार पर पिक्सेल का रंग वापस करता है?


11

क्या एक कमांड-लाइन टूल एक पिक्सेल का रंग मूल्य देता है, जो पूरी तरह से इसके स्क्रीन को-ऑर्डिनेट पर आधारित है ।

क्या ऐसा कोई उपकरण है?

(इसके अलावा: टूल को किसी उपयोगकर्ता कार्रवाई की आवश्यकता नहीं होनी चाहिए। यह एक स्क्रिप्ट में लूप में चलना है।)


जवाबों:


14

आप प्रोग्राम हड़पने का उपयोग कर सकते हैं । यह आपके माउस पॉइंटर को एक क्रॉसहेयर में बदल देगा और चयनित रंग के 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)"अपनी बैश स्क्रिप्ट में चलाएं । बेशक आपको स्क्रिप्ट को अपनी ज़रूरत के हिसाब से बदलने की ज़रूरत होगी, कुछ त्रुटि से निपटने और इस तरह से जोड़ें।

पुनश्च: मुझे पूरी तरह से यकीन नहीं है कि आप डिप्रेक्शन वर्निंग के बारे में कुछ भी कर सकते हैं, इसलिए मैंने इसे पहली पंक्ति में बंद कर दिया।


धन्यवाद htorque, लेकिन फिर से मुझे एहसास हुआ कि बहुत देर हो चुकी है कि मैंने एक महत्वपूर्ण आवश्यकता छोड़ दी है ... मैं चाहता हूं कि यह एक बैच स्क्रिप्ट में लूप में स्वत: चलाएं। तो इस छोटे से ऐप पर हेड-अप के लिए धन्यवाद। यह निश्चित रूप से कुछ समय के लिए काम आएगा .. (लेकिन मेरे वर्तमान sutuation के लिए नहीं है जहां "अन-
मैनड

htorque: आपकी पायथन लिपि मेरे उभरे हुए स्पेक्स (विशिष्ट उपयोगकर्ता के लिए बिल को पूरी तरह से फिट करती है! हमेशा स्पेक्स को बदलती है! :) ... सह-निर्देश पर सीधे काम करना मेरे "पिक्सेल-पैटर्न" प्रूफ़ को खोजने के लिए बहुत बेहतर है ... और फिर मैं सिर्फ-सह-ऑर्ड्स के लिए कर्सर को xmacro कर सकता हूं, और फिर xmacro को राइट क्लिक कर सकता हूं; सही निशाने पर .... आसान! (पाइथोनिस्टस के लिए :)
पीटर।

हो रही है no module named numpy.core.multiarray; Segmentation fault। कौन सा भाग इस मॉड्यूल पर निर्भर है?
ड्रू चैपिन

6

यह थोडा अव्यवस्थित है, लेकिन आप इसे xdotool के साथ प्राप्त कर सकते हैं जो आपको माउस के साथ इंटरैक्ट करने देता है, और जकड़ लेता है जो स्क्रीन पर क्लिक किए गए स्थान से रंग प्राप्त करता है।

sudo apt-get install xdotool grabc

पहले पकड़ो पकड़ो लेकिन यह पृष्ठभूमि

grabc &

फिर xdotool का उपयोग करके एक मूसलीक प्रदर्शन करें

xdotool click 1

क्लिक को कैप्चर के कर्सर और आउटपुट के साथ पृष्ठभूमि प्रक्रिया द्वारा कैप्चर किया जाएगा।


दिलचस्प है, मिस्टरबेन .. "क्लैगी" ठीक हो सकता है;) मैंने हाल ही में एक कहावत सुनी है। "ब्लैक कैट, व्हाइट कैट, टैबी कैट .. जब तक यह माउस को पकड़ता है" ... लेकिन मैं अस्पष्ट रूप से पिक्सेल के बारे में मैक्रो-टूल के जानकारी पृष्ठ में से कुछ को देखकर याद करता हूं (लेकिन शायद यह केवल समन्वय के बारे में था) ... मैं स्क्रीन पर पिक्सेल की एक पंक्ति को क्वेरी करना चाहता हूं, और मैं हथियाने के कारण स्विचिंग कर्सर से बचना चाहता हूं ... अब जब मैंने कार्रवाई में "पकड़ा" देखा है, मैं कुछ ऐसा चाहता हूं जो पकड़ लेता है को-ऑर्डिनेट्स पर आधारित रंग (मैंने इसे विंडोज में बहुत बार किया है :( ... मुझे उम्मीद है कि लिनक्स के लिए भी ऐसा ही कुछ है :)
पीटर।

आप पॉइंटर निर्देशांक पाने के लिए और htorque के पाइथन स्क्रिप्ट के साथ उनका उपयोग करने के लिए xdotool का उपयोग कर सकते हैं। xdotool getmouselocation | sed -e 's/x://' -e 's/y://' -e 's/ screen:.*$//'कोर्ड्स को पकड़ लेगा और उस स्क्रिप्ट को खिलाने के लिए अलग किए गए xy मानों को अंतरिक्ष में साफ कर देगा।
मिस्टरबैन

मिस्टरबेन, आपकी मदद के लिए धन्यवाद, मैंने बैकग्राउडिंग (बहुत आसान) के बारे में अधिक सीखा है .... मुझे इसका एहसास तब नहीं हुआ जब मैंने पहली बार प्रश्न पूछा था, लेकिन "को-ऑर्डिनेट्स द्वारा रंग प्राप्त करें" विधि के लिए निकला जाने का रास्ता हो।
पीटर।

मैं बस तुम्हारी कोशिश करने के लिए चारों ओर हो गया xdtool getmouselocation... बहुत अच्छा, धन्यवाद ... sed की उपयोगिता बस मुझे अद्भुत रखती है!
पीटर।

3

एक अलग समाधान, का उपयोग कर 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 धागे पर आधारित है


धन्यवाद, यह काम करता है, हालांकि यह बहुत धीमी है (वास्तविक 0.363s उपयोगकर्ता 0.456 sys 0.064s) htorque की अजगर स्क्रिप्ट (वास्तविक 0.097s उपयोगकर्ता 0.072s sys 0.020) की तुलना में।
पीटर।

@ पीटर. हां, लेकिन यह केवल सच है अगर अजगर और आयातित पुस्तकालय आपकी याद में पहले से ही कैश हैं। एक ठंड शुरू होने पर अजगर स्क्रिप्ट काफी धीमी हो जाएगी। इसलिए यदि आपकी स्क्रिप्ट केवल कभी-कभार चलती है तो आप मेरे समाधान का उपयोग करना चाहते हैं। पुनश्च: आप चीजों को गति दे सकते हैं यदि आप जानते हैं कि आप किस विंडो का निरीक्षण करना चाहते हैं। xwdका समर्थन करता है, विशिष्ट विंडो आईडी की स्क्रीनशॉट ले ताकि आप विंडो आईडी (उदाहरण के लिए क्वेरी सकता है xdotool search --name "$Win" | head -n1) और फिर इसे पारित xwdसाथ xwd -id "$WinID" -silent | ...। नोट: निर्देशांक इस मामले में खिड़की के सापेक्ष होंगे।
Glutanimate

2

मैंने इस तरह के संचालन के लिए एक अजगर मॉड्यूल लिखा है, जिसे मैक्रोपोलो कहा जाता है। लेकिन, यह केवल स्क्रीन पर पिक्सेल का रंग प्राप्त करने की तुलना में बहुत अधिक चीजें करता है।

यहाँ मंच पोस्ट है जहाँ मैंने इसे साझा किया है: http://ubuntuforums.org/showthread.php?t=2155281

मॉड्यूल में कई कार्य हैं जो आपको उदाहरण के लिए स्क्रीन के एक क्षेत्र में एक विशिष्ट रंग वाले पिक्सेल की मात्रा की गणना करने की अनुमति देते हैं, क्षेत्र में पिक्सेल रंग (ओं) की खोज करते हैं, पिक्सेल के लिए प्रतीक्षा करते हैं या स्क्रीन के एक क्षेत्र में एक विशिष्ट है रंग, पिक्सेल रंग के लिए प्रतीक्षा करें और प्रतीक्षा करते समय कुछ अन्य फ़ंक्शन चलाएं (जैसे कि किसी विशिष्ट रंग की प्रतीक्षा करते समय स्क्रीन को बंद न होने देने के लिए कर्सर को स्थानांतरित करें)।

लेकिन, जैसा कि मैंने कहा, यह और भी बहुत कुछ करता है, जैसे माउस क्लिक और कीबोर्ड, स्क्रीन के क्षेत्र का स्क्रीनशॉट लेना और बहुत कुछ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.