it-swarm.com.de

Der Versuch zu verstehen, was xwd: - in xwd: - umwandelt

Ich versuche Folgendes rückzuentwickeln:

xwd -silent | convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:-

Ich weiß, dass letztendlich diese Sequenz die RGB-Werte für eine Bildschirmkoordinate bestimmt.

Ich weiß, dass xwd einen Bildschirmauszug erstellt und dieser an den Befehl convert weitergeleitet wird.

Ich habe noch nie so etwas wie xwd:- Und txt:- Gesehen. Was machen xwd:- Und txt:-? Können Sie einen Link zu weiteren Informationen zu dieser Bash-Syntax angeben?

Vielen Dank

2
BASH

Was tun die Befehle xwd: - und txt: -? Können Sie einen Link zu weiteren Informationen zu dieser Bash-Syntax angeben?

Nur um zu verdeutlichen, das ist nicht Bash-Syntax. Diese sind Teil der Syntax von convert.

xwd:- weist convert an, seine Eingabe von stdin zu erhalten, wobei - bedeutet stdin und erwartet, dass die Eingabe im xwd Format erfolgt.

txt:- weist convert an, seine Ausgabe an stdout zu senden, wobei - bedeutet stdout und die Ausgabe im txt Format zu senden.

Mehr Details

  • xwd -silent

    Dadurch wird ein X-Fenster als Bild erfasst und diese Ausgabe im XWD-Format an stdout gesendet. Standardmäßig läutet xwd, wenn die Fenstererfassung beginnt und endet. -silent sagt es soll leise sein.

  • convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:-

    Hierfür wird das Dienstprogramm convert von ImageMagick verwendet. xwd:- weist es an, ein Bild im XWD-Format auf stdin zu akzeptieren. -depth 8 weist es an, das Bild in Tiefe 8 zu konvertieren. -crop "1x1+$X+$Y" weist es an, das Bild an den Positionen X und Y auf ein einzelnes Pixel zuzuschneiden. txt:- weist es an, Informationen zu diesem Pixel in Textform an stdout zu senden.

Schauen wir uns ein Beispiel an, um die Ausgabe von txt zu verstehen. Hier ist die Ausgabe des Zuschneidens eines Bildes auf eine Größe von 2 x 2 Pixel:

$ xwd -silent | convert xwd:- -depth 8 -crop "2x2+200+200" txt:-
# ImageMagick pixel enumeration: 2,2,255,srgb
0,0: (255,255,255)  #FFFFFF  white
1,0: (255,255,255)  #FFFFFF  white
0,1: (255,255,255)  #FFFFFF  white
1,1: (255,255,255)  #FFFFFF  white

Wie Sie sehen, wird jedes Pixel anhand seiner Position im zugeschnittenen Bild, seiner RGB-Farbe in zwei Formaten und, sofern verfügbar, des allgemeinen Farbnamens identifiziert.

Mehr Beispiele

Eine JPEG-Datei kann mit einer ähnlichen Syntax in PNG konvertiert werden:

cat out.jpg | convert jpg:- png:- >out.png

Natürlich ist in diesem einfachen Beispiel die Pipeline überflüssig. Das Obige kann vereinfacht werden, um:

convert jpg:out.jpg png:out.png

Wenn das Dateiformat nicht angegeben ist, wird es von convert an den Dateierweiterungen erraten. Für Dateien mit erkennbaren Dateierweiterungen funktioniert also auch Folgendes:

convert out.jpg out.png

Dokumentation

Wenn Sie convert ohne Argumente ausführen, wird eine Hilfemeldung angezeigt. Am Ende der Hilfemeldung steht eine Erklärung der Bedeutung von xwd:- und txt:-:

Standardmäßig wird das Bildformat von "file" durch seine magische Nummer bestimmt. Um ein bestimmtes Bildformat anzugeben, müssen Sie dem Dateinamen einen Bildformatnamen und einen Doppelpunkt (d. H. Ps: image) voranstellen oder den Bildtyp als Dateinamensuffix (d. H. Image.ps) angeben. Geben Sie 'file' als '-' für die Standardeingabe oder -ausgabe an.

3
John1024