zur Übersicht nächste Seite

imagemagick Teil11

Generell gilt bei den weißen Textstellen auf dieser Seite: Man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Terminals ein - dann drückt man die Eingabetaste.

Es werden hier nur einige Informationen von der ImageMagick-Internetseite übersetzt. Für eine komplette Dokumentation bitte dort nachschauen.

Es wird das Bild deb6510.jpg von den vorhergehenden Seiten verwendet.

Man kann mit Lichteffekten überblenden
convert deb6510.jpg \( deb7306.jpg -colorspace gray \) -compose LinearLight -composite deb7307.jpg

    

Es wird die Steinwand in eine Graufarben-Maske verwandelt und die Struktur übertragen. Das Ergebnis ist noch nicht begeisternd aber es gibt Möglichkeiten die Graufarben zu verändern. Eine sinnvolle Möglichkeit ist
-evaluate subtract Wert%
Dabei ist Wert eine ganze Zahl zwischen 0 und 100.
Um die Wirkung zu sehen kann man eine Übersicht mit Beispielwerten erzeugen
for i in 15 18 20 22 25 28 ; do convert deb6510.jpg \( deb7306.jpg -colorspace gray -evaluate subtract $i% \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 3x -geometry +6+6 -background khaki deb7370.jpg

20% ist eine gute Wahl, also
convert deb6510.jpg \( deb7306.jpg -colorspace gray -evaluate subtract 20% \) -compose LinearLight -composite deb7308.jpg

Dies ist schon eine ziemlich gute Wandmalerei.
Es wurde -compose mit der Methode
LinearLight
verwendet. Man kann auch bei -compose 2 Bilder mit zusätzlicher Maske bearbeiten in der Form

convert Hintergrundbild Vordergrundbild Maske -compose Methode -composite Ergebnisbild

Nun soll die folgende Gardine deb7300.jpg verändert werden. Dazu wird in gimp eine Maske deb7301.gif erzeugt.

    

Zunächst kann man die Gardine einfärben, z.B. mit der Farbe green. Man kann eine Übersicht mit Beispielwerten erzeugen
for i in 10 15 20 25 28 30 35 40 ; do convert -size 240x150 xc:green \( deb7300.jpg -colorspace gray -evaluate subtract $i% \) deb7301.gif -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 4x -geometry +6+6 -background khaki -resize 80% +repage deb7315.jpg

Die Maske zeigt in der Mitte die Farbe green im Original. Daher kann man gut vergleichen. Es wurde 35% gewählt. Dann wird das Gardinenbild fertiggstellt
convert -size 240x150 xc:green \( deb7300.jpg -colorspace gray -evaluate subtract 35% \) deb7301.gif -compose LinearLight -composite deb7316.jpg

convert deb7300.jpg 7316.jpg deb7301.gif -composite deb7317.jpg

    

Nun soll die Gardine mit einem Stoffmuster deb7310.jpg bedruckt werden

Man kann eine Übersicht mit Beispielwerten erzeugen
for i in 28 30 35 40 45 50 55 60 ; do convert deb7310.jpg \( deb7300.jpg -colorspace gray -evaluate subtract $i% \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 3x -geometry +6+6 -background khaki deb7311.jpg

Es wurde 40% gewählt. Dann wird das Gardinenbild fertiggstellt
convert deb7310.jpg \( deb7300.jpg -colorspace gray -evaluate subtract 40% \) -compose LinearLight -composite deb7312.png

convert deb7300.jpg deb7312.png deb7301.gif -composite deb7313.jpg

    

Obwohl das Ergebnis sehr gut ist fehlt der dreidimensionale Faltenwurf. Um dies genauer zu zeigen soll die Gardine mit dem Bild von Hund Rene bedruckt werden. Dazu muß die Größe des Rene-Bildes von 200x145 pixeln auf die Größe des Gardinenbildes 240x150 pixel geändert werden. Es wird auch gleich eine Stoffzugabe mit eingeplant
convert deb6510.jpg -virtual-pixel mirror -set option:distort:viewport 720x150-0-5 -filter point -distort SRT '0' +repage deb7380.png

Das darunterliegende Bild links ist nach dem Verfahren von oben erzeugt worden. Es gibt keinen dreidimensionalen Faltenwurf.
Bei dem Bild rechts sieht dies anders aus.

    

Um diesen Effekt zu erhalten überlegt man daß der Stoff der Gardine gerafft wird. Bei festem linken Rand wird die Stoffbahn nach links geschoben um eine Falte zu erzeugen. Also wird zunächst etwas über das Verschieben nach links über eine Maske gesagt. Dazu wird ein Bild deb7302.gif und eine Maske deb7303.gif vorgegeben und dann
convert deb7302.gif deb7303.gif -virtual-pixel black -compose Displace -set option:compose:args 8x0 -composite deb7304.gif

        

Die farbigen Quadrate des linken Bildes sind 8x8 pixel groß. Die Maske hat als Grundfarbe gray50 oder in HEX #7F7F7F denn Flächen in dieser Farbe werden von
-compose Displace
nicht verschoben. Die Maske hat zwei rechteckige Löcher in weiß und schwarz. Bei dem rechten Bild sieht man daß die Farbe schwarz eine Verschiebung nach rechts bewirkt, die Farbe weiß eine Verschiebung nach lins.
-set option:compose:args 8x0
bewirkt eine Verschiebung von 8 pixel waagrecht und 0 pixel senkrecht. Dies ist bei den roten Quadraten gut zu sehen. Aber es werden auch Bereiche in die zwei Löcher verschoben die vorher unter der gray50-Farbe verborgen waren.

Damit werden Masken gebraucht die links die Farbe gray50 haben und rechts die Farbe weiß. Es muß für jede Falte eine neue Maske gemacht werden, am besten mit gimp. Die Masken brauchen auch eine Stoffzugabe wie dies bei deb7380.jpg bereits gemacht wurde. Stoff und Masken sollten die gleiche Größe haben und der Stoff muß evtl. noch positioniert werden wenn ein bestimmtes Motivteil gewünscht wird.
Auch ist es gut eine Verwischung mit -blur 2x1 zu verwenden.

Wenn die Masken von debli01.png bis debli24.png durchnummeriert sind so ist zum Erzeugen der linken Gardine mit Motiv Rene folgendes ins Terminal eigegeben worden (am Anfang wird eine Stoffverschiebung gemacht um das Motiv zu postionieren)
convert deb7380.png -crop 510x150+40+0 +repage -virtual-pixel mirror
debli01.png -compose Displace -set option:compose:args 3x0 -composite
debli02.png -compose Displace -set option:compose:args 3x0 -composite
debli03.png -compose Displace -set option:compose:args 3x0 -composite
debli04.png -compose Displace -set option:compose:args 3x0 -composite
debli05.png -compose Displace -set option:compose:args 3x0 -composite
debli06.png -compose Displace -set option:compose:args 3x0 -composite
debli07.png -compose Displace -set option:compose:args 3x0 -composite
debli08.png -compose Displace -set option:compose:args 3x0 -composite
debli09.png -compose Displace -set option:compose:args 3x0 -composite
debli10.png -compose Displace -set option:compose:args 3x0 -composite
debli11.png -compose Displace -set option:compose:args 3x0 -composite
debli12.png -compose Displace -set option:compose:args 3x0 -composite
-crop 120x150+0+0 +repage linkesBILD.png
Natürlich muß noch das entsprechende rechteBILD.png erzeugt werden, beide aneinandergeklebt und die Schattenstruktur übertragen werden.

Mit einer einzelnen Maske läßt sich der dreidimensionale Faltenwurf nicht erzeugen.

Es ist nicht einfach zu wissen welche Schritte bei imagemagick gebraucht werden denn der Funktionsumfang ist enorm. So kann man die Methoden von -compose erfahren durch
convert -list compose
Nutzt man die dunkelgrün eingefärbte Gardine als Maske zum Aufdrucken des obigen Stoffmusters, ersetzt man also den Dateinamen deb7300.jpg durch deb7317.jpg in der Terminaleingabe, so passiert folgendes

Die Datei deb7317.jpg ist zu dunkel für eine sinnvolle Maske. Man muß das Bild heller machen. Eine Möglichkeit bietet
-brightness-contrast HxC
Dabei ist H eine Zahl für die Helligkeit
von -100 bis 0 zum Abdunkeln
von 0 bis 100 zum Aufhellen
und C ist eine Zahl für den Kontrast
von -100 bis 0 zum Abschwächen des Kontrastes
von 0 bis 100 zum Verstärken des Kontrastes
Hier kann man verwenden
convert deb7317.jpg \( deb7317.jpg -colorspace gray -brightness-contrast 58x-30 \) deb7301.gif -composite deb7318.jpg

Ersetzt man jetzt den Dateinamen deb7300.jpg durch deb7318.jpg in der Terminaleingabe so erhält man wieder eine mit dem Stoffmuster sinnvoll bedruckte Gardinenauswahl. Die Bilder deb7300.jpg und deb 7318.jpg sind sehr ähnlich wenn auch nicht identisch.


zur Übersicht nächste Seite

Datenschutzerklärung
Impressum