it-swarm.com.de

Screenshot eines bestimmten Bereichs von der Befehlszeile aus

Ich verwende Lubuntu Desktop 12 und suche nach einem Tool, das Screenshots eines bestimmten Bereichs von der Befehlszeile aufnehmen kann.

Ich habe Shutter ausprobiert. Es funktioniert, aber wenn ich den Befehl ausführe, werden Warnungen generiert (Wnck-WARNING **: Unhandled action type). Ich denke, das Tool ist möglicherweise für die Ausführung unter GNOME konzipiert und möglicherweise nicht mit Lubuntu kompatibel. Der Screenshot wurde erfolgreich aufgenommen, aber der Befehl bleibt hängen, womit ich nicht arbeiten kann.

Also, was ist das für ein gutes Screenshot-Tool?

  1. Läuft von der Kommandozeile aus
  2. Kann einen bestimmten Bereich des Desktops erfassen

Ich möchte hinzufügen, dass scrot, mit dem Lubuntu ausgeliefert wird, keine Option zum Zuschneiden bestimmter Koordinaten hat, sondern nur einen interaktiven benutzerdefinierten Bereich, der nicht das ist, wonach ich suche.

5
AL-Kateb

In Lubuntu können Sie genau das tun, was Sie wollen: Machen Sie einen Screenshot von der Befehlszeile mit dem Befehl:

scrot_extended 100 100 400 400

mit dem Skript unten.

Die vier Argumente sind <x>, <y>, <width>, <height>.
Ich hatte (noch) nicht die Möglichkeit, es in Lubuntu 12.04 zu testen, aber es scheint unwahrscheinlich, dass es nicht funktionieren würde. Es werden python 2 und grundlegende Befehlszeilentools verwendet, die es bereits seit langer Zeit gibt.

Erläuterung

Das Drehbuch:

  • macht einen Screenshot mit scrot
  • speichert es in einer temporären Datei
  • mit imagemagick wird ein neues Bild mit den Argumenten erstellt, mit denen Sie das Skript ausgeführt haben
  • das Bild wird als nummerierte Datei in einem Verzeichnis gespeichert, um ein Überschreiben zu verhindern

Wie benutzt man

  1. Das Skript verwendet sowohl scrot als auch imagemagick. scrot sollte sich auf Ihrem System befinden. So installieren Sie imagemagick:

    Sudo apt-get install imagemagick
    
  2. Kopieren Sie das Skript in eine leere Datei

  3. Standardmäßig werden Bilder unter ~/scrot_images mit dem Namen: outputfile_1.png, outputfile_2.png usw. gespeichert. Ändern Sie es, wenn Sie möchten, wie im Skript markiert. Beachten Sie, dass Sie beim Ändern des Verzeichnisses den vollständigen Pfad verwenden müssen.
  4. Speichern Sie die Datei unter ~/bin (erstellen Sie das Verzeichnis, falls erforderlich) als scrot_extended (keine Erweiterung) und machen Sie sie ausführbar.
  5. Loggen Sie sich aus und wieder ein und machen Sie Ihren Screenshot mit dem Befehl:

    scrot_extended <x> <y> <width> <height>
    

Beispiel:

scrot_extended 100 100 400 400

enter image description here

ausgabedatei:

enter image description here

Das Drehbuch

#!/usr/bin/env python
import subprocess
import os
import sys
# setting default directories / filenames
home = os.environ["HOME"]
temp = home+"/"+".scrot_images"
img_in = temp+"/in.png"
# if you prefer, you can change the two line below:
output_directory = home+"/"+"scrot_images" # output directory
filename = "outputfile"                    # filename
# creating needed directories
for dr in [temp, output_directory]:
    if not os.path.exists(dr):
        os.mkdir(dr)
# creating filename (-number) to prevent overwriting previous shots
n = 1
while True:
    img_out = output_directory+"/"+filename+"_"+str(n)+".png"
    if os.path.exists(img_out):
        n = n+1
    else:
        break
# reading arguments,arranging commands to perform
coords = sys.argv[1:5]
cmd1 = ["scrot", img_in]
cmd2 = ["convert", img_in, "-crop", coords[2]+"x"+coords[3]+"+"+coords[0]+"+"+coords[1], "+repage", img_out]
# Take screnshot, crop image
for cmd in [cmd1, cmd2]:
    subprocess.call(cmd)
8
Jacob Vlijm

Binden Sie ein Bash-Skript, das Scrot und Imagemagick implementiert, an eine Tastenkombination

Das macht fast dasselbe wie Jacob Vlijms Antwort , aber mit Bash. Es benennt Dateien mit einem Zeitstempel, um das Überschreiben vorhandener Dateien zu vermeiden. Außerdem können Sie Standard-Beschneidungsparameter im Skript definieren, sodass Sie es nicht mit Parametern aufrufen müssen.

Rufen Sie das folgende Skript wie folgt auf (vorausgesetzt, Sie befinden sich in dem Verzeichnis, in dem das Skript gespeichert ist, andernfalls ist der vollständige Pfad zum Skript erforderlich):

  • Mit Parametern: ./screenshot.sh $left_px $top_px $width_px $height_pxODER
  • Ohne Parameter: ./screenshot.sh In diesem Fall werden die im Skript angegebenen Standardparameter verwendet.

1) Installieren Sie die erforderlichen Anwendungen

Führen Sie in der Befehlszeile Folgendes aus:

Sudo apt install scrot imagemagick

2) Erstellen Sie das Skript

Öffnen Sie den gewünschten Texteditor und erstellen Sie eine neue Klartextdatei mit folgendem Inhalt. Stellen Sie sicher, dass Sie die Variablen oben ändern, um anzugeben, wo die Bilder gespeichert werden sollen und welchen Teil des Bildschirms Sie ausschneiden möchten. Siehe dieser Trick , um Mauskoordinaten zu erhalten, mit denen left und top gesucht und width und height berechnet werden können.

#!/bin/bash

# Change these values to match your preferences
imageQuality=100    # scrot default is 75
screenshotDir="/tmp"    # directory in which to save screenshots
imageName="$(date +%Y-%m-%d.%H:%M:%S.%N).jpg"   # save image names as timestamp
default_left=10     # begin crop this number of pixels from the left of the image
default_top=10      # begin crop this number of pixels from the top of the image 
default_width=100   # crop this many pixels wide
default_height=100  # crop this many pixels tall

#Do not make any more changes from here down unless you know what you're doing
l=$1; t=$2; w=$3; h=$4
left=${l:=$default_left}
top=${t:=$default_top}
width=${w:=$default_width}
height=${h:=$default_height}
imagePath="$screenshotDir/$imageName"

[ ! -d "$screenshotDir" ] && mkdir -p "$screenshotDir"
scrot -q $imageQuality "$imagePath"
convert "$imagePath" -crop ${width}x${height}+${left}+${top} "$imagePath"

Speichern Sie dieses Skript an einem beliebigen Ort und machen Sie es ausführbar. Angenommen, Sie haben Ihr Skript screenshot.sh genannt, dann würden Sie dies in der Befehlszeile folgendermaßen tun:

chmod +x /path/to/your/script/screenshot.sh

3) Binden Sie dieses Skript an eine Tastenkombination (optional)

Befolgen Sie die Anweisungen hier zu finden , um eine benutzerdefinierte Tastenkombination zu erstellen. Wenn Sie den Punkt erreichen, an dem Sie den Befehl eingeben sollen, geben Sie den vollständigen Pfad zu Ihrer screenshot.sh -Datei (einschließlich des Dateinamens) ein.

1
b_laoshi

Verwenden von maim


Übersicht

maim (make image) ist ein neues Screenshot-Dienstprogramm, das als verbesserte Version von scrot entwickelt wurde.

Eine der vielen neuen Funktionen, die maim enthält, ist die Unterstützung für das Festlegen eines Bildschirmaufnahmebereichs direkt über die CLI. Die Syntax funktioniert wie folgt:

maim -x <x-coordinate> -y <y-coordinate> -w <width> -h <height>

z.B.:

maim -x 100 -y 100 -w 400 -h 400

Installation

maim ist noch nicht in den offiziellen Repositories angekommen und gehört auch keiner PPA an. Sie müssen es aus dem Quellcode kompilieren, um es zu installieren.

Nachdem Sie sichergestellt haben, dass alle Abhängigkeiten erfüllt sind ...

Sudo apt-get install build-essential cmake
Sudo apt-get install libimlib2-dev libxrandr-dev libxfixes-dev

... wir können mit der eigentlichen Kompilierung und Installation fortfahren:

git clone https://github.com/naelstrof/maim.git
cd maim
cmake ./
make && Sudo make install

Das ist es. Sie sollten jetzt maim von Ihrem Terminal aus aufrufen können. Bitte überprüfen Sie die Dokumentation (maim --help) auf alle verfügbaren Optionen. und check out slop , ein Dienstprogramm desselben Entwicklers, mit dem Sie den Bereich der Bildschirmaufnahme interaktiv auswählen können.

1
Glutanimate

Laut diesem Dokument im Wiki hier: https://wiki.ubuntu.com/Lubuntu/Applications/Process%20Documentation xfce4-screenshooter ist eine der Screenshot-Apps für diese Distribution. Auf meinem XFCE-Setup macht der folgende Befehl, was Sie verlangen.

xfce4-screenshooter
0
Dave