zur Übersicht nächste Seite

imagemagick Teil10

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 werden die Bilder deb6510.jpg und deb6919.gif von den vorhergehenden Seiten verwendet.

Man kann auch über eine Maske verschieben. Dazu wird folgende Maske benutzt
convert -size 100x10 gradient:gray50-black -size 100x20 xc:black -size 100x10 gradient:black-gray50 -size 100x20 xc:gray50 -size 100x10 gradient:gray50-white -size 100x20 xc:white -size 100x10 gradient:white-gray50 -append -rotate 270 deb7201.png

Alles was gray50 ist wird nicht verschoben. Alles hellere bis weiß wird in eine Richtung verschoben, alles was dunkler bis schwarz ist wird in die entgegengesetzte Richtung verschoben. Die Stärke der Farbabweichung von gray50 bestimmt die Stärke der Verschiebung. Man kann durch
-set option:compose:args XxY
Verschiebungen in X-Richtung und Y-Richtung erzeugen.
Zur Verdeutlichung wird ein Bild erzeugt
convert -font FreeSerif -gravity center -size 100x50 label:'Beispiel' deb7204.png

Nun wird eine Verschiebung in Y-Richtung und dann eine Verschiebung in X-Richtung erzeugt. Die Eingabe in das Terminal wird beschrieben durch

convert Bild Maske -virtual-pixel black -compose Displace -set option:compose:args XxY -composite Ergebnis
convert deb7204.png deb7201.png -virtual-pixel black -compose Displace -set option:compose:args 0x8 -composite deb7205.png

convert deb7204.png deb7201.png -virtual-pixel black -compose Displace -set option:compose:args 8x0 -composite deb7207.png

Der Buchstabe s liegt im Bereich der Maskenfarbe gray50 und wird daher nicht verschoben.
Es sind deutlich die schwarzen virtuellen pixel zu sehen die bei der Verschiebung entstehen.
Deshalb ist es von Vorteil die virtuellen pixel anders darzustellen. Eine gute Möglichkeit ist
-virtual-pixel black
zu ersetzen durch
-virtual-pixel mirror
Nun wird eine Verschiebungs-Maske gebaut. Anschließend wird diese verwischt um harte Kanten zu beseitigen
convert deb7201.png -set option:distort:viewport 2000x2000-0-0 -virtual-pixel CheckerTile -background gray50 -filter point -distort SRT 0 -resize 10% -crop 200x145+0+0 +repage deb7210.png

convert deb7210.png -blur 2x2 deb7214.png

    

Nun wird eine Maske erstellt bei der der Hund Rene nicht verschoben wird und also die Farbe gray50 braucht. Dann wird die Verschiebungs-Maske angewendet
convert deb7214.png -size 200x145 xc:gray50 deb6919.gif -composite deb7216.png

for i in 0x1 1x0 3x1 2x2 1x3 ; do convert deb6510.jpg deb7216.png -virtual-pixel mirror -compose Displace -set option:compose:args $i -composite +depth miff:- ; done | convert -delay 15 - -loop 0 -layers optimize deb7220.gif

    

Was passiert wenn man die erste Maske auf dieser Seite dreht
convert deb7201.png -rotate 90 deb7221.png

Wieder wird eine Verschiebung in Y-Richtung und dann eine Verschiebung in X-Richtung erzeugt. Dabei muß die Maske auf die Bildgröße vom Beispiel-Bild gebracht werden
convert deb7204.png \( deb7221.png -resize 100x50! \) -virtual-pixel mirror -compose Displace -set option:compose:args 0x8 -composite deb7222.png

convert deb7204.png \( deb7221.png -resize 100x50! \) -virtual-pixel mirror -compose Displace -set option:compose:args 8x0 -composite deb7223.png

Bei dem unteren Bild zeigt sich in der oberen linken Ecke ein Fragment des gespiegleten B. Die Verwendung von mirror spielt also sinnvolle Bildelemente ein was gerade bei Photos vorteilhaft ist.
Nun wird eine Verschiebungs-Maske gebaut. Diesmal mit perspektivischer Verzerrung
convert deb7221.png -set option:distort:viewport 2000x2000-0-0 -virtual-pixel CheckerTile -background gray50 -filter point -distort Perspective '0,0 400,0 0,2000 0,2000 2000,0 1600,0 2000,2000 2000,2000' -resize 20% -crop 200x145+100+50 +repage deb7226.png

Diese Maske wird verwischt und angewendet auf das Bild deb7228.jpg
(alternativ auch auf deb7238.jpg).
for i in 0x1 3x2 5x2 6x3 4x4 3x3 2x2 ; do convert deb7228.jpg \( deb7226.png -blur 2x2 \) -virtual-pixel mirror -compose Displace -set option:compose:args $i -composite +depth miff:- ; done | convert -delay 15 - -loop 0 -layers optimize deb7227.gif

    

    

Für das folgende Bild deb7240.jpg wird mit gimp eine Maske deb7242.gif für das innere Objekt erzeugt

    

Um eine schräge Verschiebung zu erzeugen wird jetzt eine schräge Maske erstellt die auch noch in schräger Richtung verwischt wird. Dann wird die Maske des inneren Objektes in der Farbe gray50 in die schräge Maske eingebaut
convert deb7221.png -set option:distort:viewport 2000x2000-0-0 -virtual-pixel CheckerTile -background gray50 -filter point -distort SRT 45 -resize 20% -size 400x400 xc:white -set option:compose:args '2x4-45' -compose blur -composite -crop 200x145+50+50 +repage deb7243.png

convert deb7243.png -size 200x145 xc:gray50 deb7242.gif -composite deb7245.png

    

Dann wird die Verschiebungs-Maske angewendet
for i in 0x3 1x6 2x9 3x7 2x4 ; do convert deb7240.jpg deb7245.png -virtual-pixel mirror -compose Displace -set option:compose:args $i -composite +depth miff:- ; done | convert -delay 18 - -loop 0 -layers optimize deb7247.gif

Die zentrale Farbe ist gray50 . Farben die heller sind als gray50 bewirken eine Verschiebung in eine Richtung, dunklere Farben eine Verschiebung in die entgegengesetzte Richtung. Um ausschließlich eine Verschiebung in eine Richtung zu erhalten werden jetzt für die Maske nur Farben zwischen weiß und gray50 verwendet.
convert -size 50x10 gradient:gray50-white -size 50x30 xc:white -size 50x10 gradient:white-gray50 -append -rotate 270 deb7271.png

Nun wird wie oben eine Maske erzeugt (allerdings ohne ein Verwischen) und in gray50 die Maske von Hund Rene eingebaut
convert deb7271.png -set option:distort:viewport 2000x2000-0-0 -virtual-pixel CheckerTile -background gray50 -filter point -distort SRT 0 -resize 10% -crop 200x145+0+0 +repage deb7272.png

convert deb7272.png -size 200x145 xc:gray50 deb6919.gif -composite deb7274.png

    

Dann wird die Verschiebungs-Maske angewendet
for i in 1x10 2x40 4x60 ; do convert deb6510.jpg deb7274.png -virtual-pixel mirror -compose Displace -set option:compose:args $i -composite +depth miff:- ; done | convert -delay 40 deb6510.jpg - \( -clone -1 -set delay 200 \) +swap -loop 0 -layers optimize deb7275.gif

Die Wirkung der Option
mirror
bei dem Befehl
-virtual-pixel
ist hier gut zu sehen im unteren Bereich da dort Plättchen vom nach unten gespiegelten Hund Rene hochgeschoben werden.
Es scheinen sich die Plättchen von unten nach oben zu bewegen. Aber beim genaueren Hinschauen zeigt sich daß sich die Plättchen ständig verändern. Eigentlich passiert folgendes:
Alles was die Farbe gray50 besitzt bildet eine Trägerfolie die an vielen Stellen durchlöchert ist. Durch diese Löcher sieht man das darunterliegende Bild und dieses wird bewegt.

Man kann mit
-distort Arc
eine kreisförmige Verzerrung erreichen, z.B.
convert deb7274.png -duplicate 7 +append -virtual-pixel black -distort Arc 360 -resize 25% +repage deb7269.gif

Dies wird verwendet um eine neue Maske zu erstellen. Dann wird die Maske von Hund Rene in der Farbe gray50 in die neue Maske eingebaut
convert deb7271.png -set option:distort:viewport 2000x2000-0-0 -virtual-pixel CheckerTile -background gray50 -filter point -distort SRT 0 -resize 10% -crop 20x200+0+0 +repage deb7276.png

convert deb7276.png -duplicate 7 +append -virtual-pixel white -distort Arc 360 +repage -crop 200x145+26+50 +repage deb7278.png

7202convert deb7278.png -size 200x145 xc:gray50 deb6919.gif -composite deb7279.png

    

Dann wird die Verschiebungs-Maske angewendet. Dabei wird verwendet daß man aus dem Datenstrom Bilder herausziehen und auf der Festplatte abspeichern kann ohne daß der Datenstrom unterbrochen wird. Dies wird für das letzte Bild mit index-Nummer -1 gemacht.
for i in 1x10 2x40 4x60 4x80 ; do convert deb6510.jpg deb7279.png -virtual-pixel mirror -compose Displace -set option:compose:args $i -composite +depth miff:- ; done | convert -delay 15 deb6510.jpg - \( -clone -1 -set delay 200 \) +swap +delete \( -clone -1 -write deb7281.jpg +delete \) -loop 0 -layers optimize deb7280.gif

    


zur Übersicht nächste Seite

Datenschutzerklärung
Impressum