Aus LinuxUser 04/2008

Fortgeschrittene Bildbearbeitung auf der Konsole (Seite 2)

$ convert hintergrund.tiff freistell.png -composite final.tiff

Für eine pixelgenaue Platzierung sorgen die Parameter -gravity und -geometry:

$ convert hintergrund.tiff freistell.png -gravity Center -geometry +100+10 -composite final.tiff

Dieser Befehl zentriert das ausgeschnittene Objekt auf dem Hintergrund und verschiebt es dann 100 Pixel nach rechts, sowie 10 Pixel nach unten.

TIPP

Grauverläufe in der Maske tauchen später im Ergebnis als halbtransparente Bereiche auf. Auf diese Weise lassen sich sehr einfach Überblendungen erzeugen.

Bilderrahmen

Transparenzen ermöglichen neue, interessante Effekte. Abbildung 2 (mitte) zeigt beispielsweise eine Vorlage für einen hübschen Rahmen. Mit ihr wurde das Holz (links) ausgestanzt und über das Foto mit dem Vogel gelegt (rechts). Diesen dreistufigen Vorgang dürfen Sie übrigens auch in einem Befehl zusammenfassen und sich so den Umweg über eine PNG-Datei sparen:

$ convert hintergrund.tiff holz.tiff maske.png -composite final.tiff
Abbildung 2: In die Holzvorlage (links) stanzt die Maske (Mitte) ein Loch in Form der schwarzen Fläche. Den ausgestanzten Holzrahmen legt Convert dann über den Specht (rechts).
Abbildung 2: In die Holzvorlage (links) stanzt die Maske (Mitte) ein Loch in Form der schwarzen Fläche. Den ausgestanzten Holzrahmen legt Convert dann über den Specht (rechts).

Malen nach Zahlen

Bislang mussten Sie die Masken in einem Malprogramm erstellen. Doch auch dies übernimmt Convert. Dazu füttern Sie den Parameter -draw mit Informationen darüber, was er zeichnen soll – etwa ein Rechteck:

$ convert -size 150x100 xc:lightgreen -fill white -stroke black -draw "rectangle 10,20 130,80" rechteck.tiff

Der Parameter xc:lightgreen sorgt dabei für einen hellgrünen Hintergrund, auf den Convert ein weißes Rechteck (-fill white) mit schwarzem Rand (-stroke black) malt. Der Hintergrundparameter dient zugleich als Ersatz für eine Eingabedatei – andernfalls meldet Convert missing an image filename. Die Zahlen hinter rectangle geben die linke obere und untere rechte Ecke des Rechtecks an.

Der Option -draw dürfen Sie sogar mehrere Zeichenanweisungen mitgeben, die Sie am Stück zwischen die Anführungszeichen klemmen:

$ convert -size 150x100 xc:grey -draw "fill red circle 45,50 35,80 fill blue circle 85,50 95,80" kreise.tiff

Dies erzeugt die beiden sich überlagernden Kreise aus Abbildung 3. Deren Koordinaten lassen sich nicht ohne Mühe bestimmen: Die ersten beiden Werte geben die Lage des Kreismittelpunkts an, die zwei danach einen Punkt auf dem Kreisrand. Da die Farben hier für jeden Kreis unterschiedlich ausfallen, positionieren Sie diese innerhalb der Anführungszeichen.

Abbildung 3: Neben Kreisen und Rechtecken kennt Convert noch viele weitere Zeichenbefehle, wie beispielsweise Linien, Punkte und sogar Text.
Abbildung 3: Neben Kreisen und Rechtecken kennt Convert noch viele weitere Zeichenbefehle, wie beispielsweise Linien, Punkte und sogar Text.

Die obigen Zeichenanweisungen in eine Kommandozeile zu quetschen artet spätestens bei größeren Gemälden in einen unübersichtlichen Wust von Parametern aus. Deshalb dürfen Sie alles, was hinter -draw in den Anführungszeichen folgt, in eine externe Textdatei auslagern, die Sie etwa kreise.mvg nennen:

$ convert -size 150x100 xc:grey -draw @kreise.mvg kreise.tiff

Auf diese Weise malen Sie recht schnell pixelgenaue Masken. Sie müssen lediglich darauf achten, als Zeichenfarbe Weiß und als Hintergrundfarbe Schwarz zu verwenden.

Logisch

Bislang blieben die Bilder recht flach. Im Zusammspiel mit Masken verlängern Sie die Figuren in dritte Dimension, wie das folgende kleines Logo beweist. Zeichnen Sie zunächst dessen Grundform und verwenden Sie dazu wieder nur schwarze und weiße Farbe: Die Grafik dient zugleich als Maske ihrer selbst. Das Beispiel in Abbildung 4 (links) erzeugt der Befehl aus Zeile 1 in Listing 1. Der Schalter +matte sorgt dafür, dass Convert jegliche Transparenz ignoriert.

In Zeile 2 kommen als nächstes rote Farbe und roter Text ins Spiel. Zunächst dupliziert (+clone) die gerade angelegte Maske und koloriert (-colorize) die Kopie mit roter Farbe (-fill red). Anschließend greift der Befehl wieder zur Maske und stanzt damit das eingefärbte Logo aus. Zum Schluss kommt in die Mitte noch eine Beschriftung (Parameter -annotate). 34 Punkt groß und eine weiß gefüllt, hebt sie sich durch einen schwarzen Rand ab. Die Ziffern hinter -annotate verschieben die Schrift ein wenig aus dem Zentrum, damit sie brav im roten Rechteck bleibt.

Listing 1
$ convert -size 150x100 xc:black -draw "fill white roundrectangle 20,20 125,70 10,10 fill black circle 120,65 135,80 fill white circle 120,65 130,75" -gaussian 1x1 +matte logo_maske.png
$ convert logo_maske.png +clone +matte -compose CopyOpacity -composite -fill red  -colorize 100% -pointsize 34 -fill white -stroke black -gravity Center  -annotate 0x0-10-5 "Logo" logo.png
LinuxUser 04/2008 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: