มีเครื่องมือบรรทัดคำสั่งส่งกลับค่าสีของพิกเซล, เพียงลำพังบนพื้นฐานของหน้าจอพิกัด
มีเครื่องมือดังกล่าวหรือไม่?
(นอกจากนี้: เครื่องมือไม่จำเป็นต้องมีการดำเนินการของผู้ใช้มันคือการทำงานเป็นวนรอบในสคริปต์)
มีเครื่องมือบรรทัดคำสั่งส่งกลับค่าสีของพิกเซล, เพียงลำพังบนพื้นฐานของหน้าจอพิกัด
มีเครื่องมือดังกล่าวหรือไม่?
(นอกจากนี้: เครื่องมือไม่จำเป็นต้องมีการดำเนินการของผู้ใช้มันคือการทำงานเป็นวนรอบในสคริปต์)
คำตอบ:
คุณสามารถใช้โปรแกรมgrabc มันจะเปิดตัวชี้เมาส์ของคุณใน crosshair และคืนค่า HTML และ RGB ของสีที่เลือก
sudo apt-get install grabc
ข้อเสีย: เป็นไปไม่ได้ที่จะทำการเลือกพิกเซลที่แม่นยำเนื่องจาก crosshair ไม่บางพอ
คุณสามารถสร้างสคริปต์ไพ ธ อนได้ดังนี้
#!/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)"
ในสคริปต์ทุบตีของคุณ แน่นอนคุณต้องเปลี่ยนสคริปต์ในแบบที่คุณต้องการเพิ่มการจัดการข้อผิดพลาดและอื่น ๆ
PS: ฉันไม่แน่ใจว่าคุณสามารถทำอะไรกับ DeprecationWarning ได้ดังนั้นฉันจึงปิดมันในบรรทัดแรก
no module named numpy.core.multiarray; Segmentation fault
การเดินทาง ส่วนใดขึ้นอยู่กับโมดูลนี้
นี่เป็นสิ่งที่ค่อนข้างยุ่งเหยิง แต่คุณสามารถทำสิ่งนี้ได้ด้วย xdotool ซึ่งช่วยให้คุณสามารถโต้ตอบกับเมาส์และ grabc ที่รับสีจากตำแหน่งที่คลิกบนหน้าจอ
sudo apt-get install xdotool grabc
วิ่งครั้งแรก grabc แต่พื้นหลังมัน
grabc &
จากนั้นดำเนินการ mouseclick โดยใช้ xdotool
xdotool click 1
การคลิกจะถูกจับโดยเคอร์เซอร์ของ grabc และกระบวนการพื้นหลังพร้อมแสดงสี
xdotool getmouselocation | sed -e 's/x://' -e 's/y://' -e 's/ screen:.*$//'
จะคว้า coords และทำความสะอาดลงในช่องว่างคั่นค่า 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
ตามคำตอบของ @ Christian ใน Q&A StackOverflowและเธรด imagemagick.orgนี้
xwd
สนับสนุนการหน้าจอรหัสหน้าต่างเฉพาะเพื่อให้คุณสามารถสอบถามหน้าต่าง ID (เช่นxdotool search --name "$Win" | head -n1
) และจากนั้นจะผ่านมันไปด้วยxwd
xwd -id "$WinID" -silent | ...
หมายเหตุ: พิกัดจะสัมพันธ์กับหน้าต่างในกรณีนี้
ฉันได้เขียนโมดูล python สำหรับการดำเนินการเช่นนี้เรียกว่า Macropolo แต่มันทำอะไรได้มากกว่าการรับสีของพิกเซลบนหน้าจอ
นี่คือกระทู้ที่ฉันได้แชร์: http://ubuntuforums.org/showthread.php?t=2155281
โมดูลมีฟังก์ชั่นมากมายที่ช่วยให้คุณเช่นนับจำนวนพิกเซลที่มีสีเฉพาะในพื้นที่ของหน้าจอค้นหาสีพิกเซลในพื้นที่รอพิกเซลหรือพื้นที่ของหน้าจอมีเฉพาะ สีรอสีพิกเซลและเรียกใช้ฟังก์ชั่นอื่นขณะรอ (เช่นเลื่อนเคอร์เซอร์เพื่อไม่ให้หน้าจอดับในขณะที่คุณกำลังรอสีที่ต้องการ)
แต่อย่างที่ฉันบอกไปมันทำอะไรได้หลายอย่างเช่นการจำลองการคลิกเมาส์และคีย์บอร์ดการจับภาพหน้าจอของพื้นที่หน้าจอและอื่น ๆ