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 |