Mam obraz na ekranie i chcę zmierzyć jego szerokość. Oczywiście mogę użyć linijki , ale to kapryśne i powolne. Czy jest coś, w czym mogę kliknąć klawisz skrótu, przeciągnąć obszar, a on powie mi wysokość i szerokość tego obszaru?
Coś podobnego do Page Ruler dla Google Chrome.
Obecnie używam Shift+ PrtScni przeciągam obszar, zapisz obraz, a następnie przejdź do Właściwości, aby sprawdzić jego wysokość i szerokość.
Jak to działa
Poniższy skrypt mierzy rozmiar obszaru między dwiema lokalizacjami wskaźnika myszy.
Działa w następujący sposób:
Umieść wskaźnik myszy w pierwszej pozycji (bez klikania)
Naciśnij wybraną kombinację klawiszy (patrz dalej poniżej)
Umieść mysz w drugiej pozycji (ponownie bez klikania)
Naciśnij ponownie kombinację klawiszy. Powiadomienie powie ci dokładny rozmiar (px) obszaru.
Opcje
Możesz wybrać (odznaczając jedną z linii), w jaki sposób chcesz otrzymywać powiadomienia; albo poprzez powiadomienie:
Lub okno informacyjne Zenity:
(Przykłady pochodzą z różnych dziedzin)
Jak używać
Skrypt wykorzystuje
xdotool
:Skopiuj poniższy skrypt do pustego pliku, odkomentuj jeden z wierszy:
(powiadamia
notify-send
opcja)lub:
dla
Zenity
opcji.Zapisz skrypt w
~/bin
(prawdopodobnie będziesz musiał utworzyć katalog) jakomeasure_area
(bez rozszerzenia) i uczyń go wykonywalnym .Dodaj dowolną kombinację klawiszy, aby uruchomić skrypt: Wybierz: Ustawienia systemu> „Klawiatura”> „Skróty”> „Skróty niestandardowe”. Kliknij „+” i dodaj polecenie:
Uwagi
Scenariusz
Wyjaśnienie
Gdy skrypt jest wywoływany po raz pierwszy, pobiera bieżącą pozycję myszy za pomocą
xdotool
polecenia:Następnie zapisuje pozycję w (niewidocznym) pliku
.measure_area.txt
, czekając na drugie połączenie.Przy drugim wywołaniu odczytuje plik, usuwa go i porównuje zapisane
x/y
współrzędne z najnowszymi oraz oblicza wielkość obszaru między nimi.Edytować
Zaktualizowano skrypt o kilka ulepszeń:
subprocess.Popen()
/subprocess.check_output()
polecenia (dzięki @muru, @Trengot)xdotool
instalacji)źródło
Popen(['/bin/bash',...
zamiastPopen(['zenity', '--info', ...
?command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]; subprocess.Popen(command)
wymaga o wiele mniej zamieszania'
i"
, jak sądzę.xdotools
? Coś takiegocheck_output(['xdotools', 'getmouseposition'])
?Za pomocą slop
Innym prostym sposobem ustalenia obszaru zaznaczenia jest użycie
slop
(Wybierz operację), narzędzia wiersza polecenia „, które pyta o wybór od użytkownika i drukuje region na standardowe wyjście”.slop
jest stosunkowo nowym narzędziem i nie zostało jeszcze spakowane dla Debian / Ubuntu. W obecnej postaci będziesz musiał skompilować go ze źródła:Instalacja jest najtrudniejsza.
slop
sam w sobie jest bardzo łatwy w obsłudze. Na przykład następujący linijka wyświetli monit o wybranie obszaru ekranu i wyświetli wynik jako powiadomienie oraz zapisze go w schowku:Zrzut ekranu:
Szybki podział używanych poleceń:
slop -t 0 -b 1
- poproś użytkownika o wybranie obszaru ekranu; nie zaznaczaj pełnego okna (-t 0
), ustaw granicę wyboru na 1px (-b 1
)eval $(...)
- odczytać wyjścieslop
zmiennychnotify-send ...
- wyślij powiadomienie GUI z informacją o wybranym obszarzeecho ${W}x${H} | xsel -bi
- skopiuj wymiary do schowka (wymagaxsel
→sudo apt-get install xsel
)źródło