zur Übersicht nächste Seite

imagemagick Teil8

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 deb6511.jpg von den vorhergehenden Seiten verwendet.

Man kann mit -distort SRT keine perspektivischen Verzerrungen erzeugen. Wenn z.B. das folgende Foto deb7001.jpg vorliegt

so kann man damit dieses Foto NICHT gerade rücken

Dafür kann man -distort Perspective verwenden. Diese distort-Operation arbeitet mit mit vier Punkten die zu vier anderen Punkten verändert werden. Zunächst kann man deb7001.jpg in ein Arbeitsbild verwandeln indem man gerade Linien einmalt

Hier wurden auch die vier Punkte P1 P2 P3 P4 eingetragen die anschließend gerade gerückt werden sollen. P1 hat im Bild den offset-Wert +4+82 was in den Koordinaten-Punkt 4,82 übersetzt wird, mit x-Koordinate 4 (nach rechts) und y-Koordinate 82 (nach unten) in einem x,y-Koordinatensystem mit Nullpunkt in der oberen linken Bildecke. Eine negative x-Koordinate wird nach links gezählt und eine negative y-Koordinate nach oben. Eine Möglichkeit zur Bestimmung der offset-Werte besteht darin das Arbeitsbild zu öffnen mit

display Arbeitsbild

Man klickt auf das angezeigte Bild und es öffnet sich ein Zusatzmenu. Dort klickt man sich zu
Region of Interest
durch. Die Maus zeigt dann die offset-Werte

Es lassen sich folgende Werte ablesen
P1 4,82 soll werden Q1 -6,82 hier wird 6 pixel nach links über den Rand verschoben
P2 4,363 soll werden Q2 4,363 also ein unveränderter Fixpunkt
P3 204,97 soll werden Q3 204,82
P4 204,352 soll werden Q4 204,363
Es ist folgende Schreibweise einzuhalten
-distort Perspective 'P1 Q1 P2 Q2 P3 Q3 P4 Q4'
Dabei ist zwischen den Punkten immer ein Leerzeichen zu setzen. Man könnte aber auch von einem PQ-Punktepaar zum nächsten PQ-Punktepaar drei Leerzeichen setzen um die Lesbarkeit zu verbessern.

Da eine Verschiebung über den linken Rand gemacht wurde ist es nicht verkehrt den Bereich der virtuellen pixel zu vergrößern.
convert deb7001.jpg -set option:distort:viewport 400x400-10-0 -virtual-pixel black -distort Perspective '4,82 -6,82 4,363 4,363 204,97 204,82 204,352 204,363' deb7009.jpg

Ein Zuschneiden führt zu obigem gerade gerücktem Ausschnittsbild deb7002.jpg

Nun umgekehrt eine Verzerrung erzeugen
convert \( deb6510.jpg -crop 50x145+0+0 +repage -virtual-pixel transparent -filter point -distort Perspective '0,0 30,5 0,145 30,140 50,0 50,0 50,145 50,145' \) -size 1x145 xc:#b0a880 \( deb6510.jpg -crop 150x145+50+0 +repage -virtual-pixel transparent -filter point -distort Perspective '0,0 0,0 0,145 0,145 150,0 140,10 150,145 140,135' \) +append deb7046.gif

Ein Bild von Hund Rene soll jetzt in 8 Schritten etwas verkleinert werden. 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.
Damit eine Variable verarbeitet werden kann muß man
-distort SRT " "
verwenden anstelle von
-distort SRT ' '
for i in {0..8}; do convert deb6510.jpg -virtual-pixel transparent -filter point -distort SRT "%[fx:1-.025*$i] 0" +depth miff:- ; done | convert -dispose background - \( -clone -1 -write deb7051.png +delete \) -set delay '%[fx:t == 0 ? 200 : 10]' -loop 0 deb7050.gif

    

Bei dem rechten Bild deb7051.png ist das Format 200x145 aber der sichtbare Bereich ist 160x116+20+15
Der sichtbare Bereich wird jetzt verzerrt, rechts vergrößert (um ca. 20% also 12 pixel oben und unten) und links verkleinert (um ca. 10% also 6 pixel oben und unten), dann werden die verzerrten Bilder in eine rechte Hälfte und eine linke Hälfte geteilt und die Hälften getrennt scaliert. Anschließend werden die entsprechenden Hälften wieder zusammengesetzt. Damit eine Variable verarbeitet werden kann muß man
-distort Perspective " "
verwenden anstelle von
-distort Perspective ' '
for i in {0..14} ; do convert deb7051.png -virtual-pixel transparent -filter point -distort Perspective "20,15 20,%[fx:15+6*$i/15] 20,131 20,%[fx:131-6*$i/15] 180,15 180,%[fx:15-12*$i/15] 180,131 180,%[fx:131+12*$i/15]" \( -clone 0 -crop 100x145+0+0 +repage -virtual-pixel transparent -distort SRT "100,72 %[fx:1-$i/15],1 0, 100,72" -write mpr:links$i +delete \) \( -clone 0 -crop 100x145+100+0 +repage -virtual-pixel transparent -distort SRT " 0,72 %[fx:1-($i/15)*($i/15)],1 0, 0,72" -write mpr:rechts$i +delete \) -delete 0 mpr:links$i mpr:rechts$i +append +depth miff:- ; done | convert -dispose background - -set delay '%[fx:t == 0 ? 100 : 10]' -loop 0 deb7055.gif

Nun werden beide gif zusammenmontiert
for i in {0..8}; do convert deb6510.jpg -virtual-pixel transparent -filter point -distort SRT "%[fx:1-.025*$i] 0" +depth miff:- ; done | convert \( -delay 100 deb6511.jpg \) -dispose previous -delay 100 deb6510.jpg -delay 10 - deb7055.gif -loop 0 -layers optimize deb7056.gif


zur Übersicht nächste Seite

Datenschutzerklärung
Impressum