Ich habe ein Bild auf dem Bildschirm und möchte dessen Breite messen. Natürlich kann ich ein Lineal verwenden , aber das ist wunderlich und langsam. Gibt es eine Möglichkeit, auf eine Tastenkombination zu klicken, einen Bereich herauszuziehen und die Höhe und Breite dieses Bereichs zu bestimmen?
Ähnlich wie Page Ruler für Google Chrome.
Gegenwärtig benutze ich Shift+ PrtScnund ziehe den Bereich heraus, speichere das Bild und gehe dann zu Eigenschaften, um seine Höhe und Breite herauszufinden.
Wie es funktioniert
Das folgende Skript misst die Größe eines Bereichs zwischen zwei Positionen des Mauszeigers.
Es funktioniert wie folgt:
Positionieren Sie den Mauszeiger an der ersten Position (ohne zu klicken)
Drücken Sie die Tastenkombination Ihrer Wahl (siehe weiter unten)
Platziere die Maus in der zweiten Position (wieder ohne zu klicken)
Drücken Sie erneut Ihre Tastenkombination. Eine Benachrichtigung informiert Sie über die genaue Größe (px) des Bereichs.
Optionen
Sie können wählen (indem Sie eine der Zeilen auskommentieren), wie Sie benachrichtigt werden möchten. entweder durch eine Benachrichtigung:
Oder ein Zenity-Infofenster:
(Die Beispiele stammen aus verschiedenen Bereichen)
Wie benutzt man
Das Skript verwendet
xdotool
:Kopieren Sie das folgende Skript in eine leere Datei und kommentieren Sie eine der folgenden Zeilen aus:
(durch die
notify-send
Option benachrichtigt werden )oder:
für die
Zenity
Option.Speichern Sie das Skript unter
~/bin
(wahrscheinlich müssen Sie das Verzeichnis erstellen) alsmeasure_area
(keine Erweiterung) und machen Sie es ausführbar .Fügen Sie eine Tastenkombination Ihrer Wahl hinzu, um das Skript auszuführen: Wählen Sie: Systemeinstellungen> "Tastatur"> "Verknüpfungen"> "Benutzerdefinierte Verknüpfungen". Klicken Sie auf das "+" und fügen Sie den Befehl hinzu:
Anmerkungen
Das Drehbuch
Erläuterung
Wenn das Skript zum ersten Mal aufgerufen wird, erhält es die aktuelle Mausposition mit dem
xdotool
Befehl:Anschließend speichert es die Position in einer (unsichtbaren) Datei
.measure_area.txt
und wartet auf den zweiten Anruf.Beim zweiten Aufruf liest es die Datei, entfernt sie, vergleicht die gespeicherten
x/y
Koordinaten mit den neuesten und berechnet die Größe des Bereichs zwischen ihnen.Bearbeiten
Das Skript wurde mit einer Reihe von Verbesserungen aktualisiert:
subprocess.Popen()
/subprocess.check_output()
Befehle (dank @muru, @Trengot)xdotool
installiert zu haben)quelle
Popen(['/bin/bash',...
stattPopen(['zenity', '--info', ...
?command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]; subprocess.Popen(command)
muss viel weniger mit'
und rumspielen"
, denke ich.xdotools
? So etwas wiecheck_output(['xdotools', 'getmouseposition'])
?Slop benutzen
Eine andere einfache Möglichkeit, den Bereich einer Auswahl zu bestimmen, ist die Verwendung von
slop
(Select Operation), einem Befehlszeilendienstprogramm, "das eine Auswahl vom Benutzer abfragt und den Bereich auf stdout druckt".slop
ist ein vergleichsweise neues Tool und wurde noch nicht für Debian / Ubuntu gepackt. So wie es aussieht, müssen Sie es aus dem Quellcode kompilieren:Die Installation ist der schwierigste Teil.
slop
selbst ist eigentlich sehr einfach zu bearbeiten. Der folgende Einzeiler fordert Sie beispielsweise auf, einen Bildschirmbereich auszuwählen, und zeigt das Ergebnis als Benachrichtigung an und schreibt es in die Zwischenablage:Bildschirmfoto:
Eine kurze Aufschlüsselung der verwendeten Befehle:
slop -t 0 -b 1
- den Benutzer auffordern, einen Bildschirmbereich auszuwählen; wähle keine vollen Fenster aus (-t 0
), setze Auswahlrahmen auf 1px (-b 1
)eval $(...)
- Ausgabe vonslop
in Variablen lesennotify-send ...
- GUI-Benachrichtigung mit Informationen zum ausgewählten Bereich sendenecho ${W}x${H} | xsel -bi
- Maße in die Zwischenablage kopieren (erfordertxsel
→sudo apt-get install xsel
)quelle