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 soll noch einmal das Zahlengif mit den sechs Zahlen von der vorhergehenden Seite angesprochen werden. Es hat den Namen deb6464.gif |
Es besteht aus sechs Bild-Dateien in der Größe 30x30 |
Genauere Informationen kann man erhalten durch |
identify -format "%p canvas=%Wx%H size=%wx%h offset=%X%Y %D %Tcs\n" deb6464.gif |
0 canvas=30x30 size=30x30 offset=+0+0 Undefined 50cs 1 canvas=30x30 size=30x30 offset=+0+0 Undefined 50cs 2 canvas=30x30 size=30x30 offset=+0+0 Undefined 50cs 3 canvas=30x30 size=30x30 offset=+0+0 Undefined 50cs 4 canvas=30x30 size=30x30 offset=+0+0 Undefined 50cs 5 canvas=30x30 size=30x30 offset=+0+0 Undefined 50cs Der Unterschied zwischen canvas= und size= wird sich gleich zeigen. |
convert deb6464.gif -write mpr:eva -delete 0--1 -size 114x114 xc:blue -page +6+6 mpr:eva[0] -page +42+6 mpr:eva[1] -page +42+42 mpr:eva[2] -page +78+42 mpr:eva[3] -page +6+78 mpr:eva[4] -page +78+78 mpr:eva[5] deb6501.gif |
Es ist zu beachten daß bei diesem gif keine Anzeigedauern und kein loop 0 aufgeschrieben wurden. Diese Informationen sind im Datenstrom und auch im mpr-Zwischenspeicher mitgespeichert. Einzelheiten |
identify -format "%p canvas=%Wx%H size=%wx%h offset=%X%Y %D %Tcs\n" deb6501.gif |
0 canvas=114x114 size=114x114 offset=+0+0 Undefined 0cs 1 canvas=114x114 size=30x30 offset=+6+6 Undefined 50cs 2 canvas=114x114 size=30x30 offset=+42+6 Undefined 50cs 3 canvas=114x114 size=30x30 offset=+42+42 Undefined 50cs 4 canvas=114x114 size=30x30 offset=+78+42 Undefined 50cs 5 canvas=114x114 size=30x30 offset=+6+78 Undefined 50cs 6 canvas=114x114 size=30x30 offset=+78+78 Undefined 50cs Nun erkennt man wie Bilder mit size=30x30 auf dem canvas=114x114 durch
offset-Werte positioniert wurden. |
convert deb6464.gif +append deb6502.gif |
Es scheint ein ganz normales Bild zu sein aber |
identify -format "%p canvas=%Wx%H size=%wx%h offset=%X%Y %D %Tcs\n" deb6502.gif |
0 canvas=180x30 size=180x30 offset=+0+0 Undefined 50cs
Das Bild enthält immer noch die Anzeigedauer 50cs |
convert deb6502.gif -crop 30x0 +depth miff:- | montage - -tile 15x -geometry +6+6 -background black x: |
Scheinbar hat man die einzelnen Zahlenbilder wieder zurückgewonnen. Aber |
convert deb6502.gif -crop 30x0 +depth miff:- | identify -format "%p canvas=%Wx%H size=%wx%h offset=%X%Y %D %Tcs\n" - |
0 canvas=180x30 size=30x30 offset=+0+0 Undefined 50cs 1 canvas=180x30 size=30x30 offset=+30+0 Undefined 50cs 2 canvas=180x30 size=30x30 offset=+60+0 Undefined 50cs 3 canvas=180x30 size=30x30 offset=+90+0 Undefined 50cs 4 canvas=180x30 size=30x30 offset=+120+0 Undefined 50cs 5 canvas=180x30 size=30x30 offset=+150+0 Undefined 50cs Die mit -crop erzeugten Streifenbilder besitzen immer noch die
canvas-Größe und die Informationen über die Positionen im
ungeschnittenen Ausgangsbild. Damit werden beim Abspeichern als GIF die
Streifen der Reihe nach an die ursprünglichen Positionen gesetzt. Und
sie besitzen Anzeigedauer und loop 0 |
convert deb6502.gif \( -size 180x30 xc:blue -set delay 60 \) \( -clone 0 -crop 30x0 \) -delete 0 deb6507.gif |
Wenn es alleine um das Zuschneiden mit -crop geht ist es zu empfehlen danach mit +repage diese Informationen zu löschen. Aber diese Zusatzinformationen ermöglichen einfache Übergänge von einem Bild zu einem anderen Bild. Hier die beiden Bilder |
convert deb6510.jpg deb6511.jpg \( -clone 0 -crop 4x0 \) \( -clone 1 -crop 4x0 \) -delete 0 -set delay 8 -loop 0 deb6515.gif |
Man kann auch von rechts nach links schneiden |
convert deb6510.jpg deb6511.jpg \( -clone 0 -crop 0x5 \) \( -clone 1 -crop 0x5 -reverse \) -delete 0 -set delay 6 -loop 0 deb6516.gif |
Benutzt man -crop mit zwei Werten, beide von 0 verschieden, so wird eine Kachelwand erzeugt. Z.B. |
convert deb6511.jpg -crop 30x25 +depth miff:- | montage - -tile 7x -geometry +6+6 -background violet x: |
Hier erhält man 42 Bilder. Man kann diese Bilder mit dem Namen Q in den mpr-Zwischenspeicher legen und dann alle Bilder aus dem Datenstrom löschen. In dem leeren Datenstrom wird ein Grundbild (deb6510.jpg) eingelesen und dann werden Q-Bilder aus dem mpr-Zwischenspeicher aufgerufen und einzeln darauf gelegt. Anschließend wird eine Anzeigedauer festgelegt und die Anzeigedauer des eingelesenen Grundbildes vergrößert. Also convert deb6511.jpg -crop 30x25 -write mpr:Q -delete 0--1 deb6510.jpg Q-Bilder-aus-mpr-Zwischenspeicher -set delay 10 -loop 0 \( -clone 0 -set delay 80 \) -swap 0 +delete deb6520.gif Man muß sich mit dem mpr-Zwischenspeicher beschäftigen in
dem 42 Bilder abgelegt wurden. Diese wurden durchnummeriert, beginnend mit
0, in der Reihenfolge von links nach rechts und in den Zeilen von oben
nach unten. Also so wie bei der üblichen Schreibweise. Auf dem obigen
Bild wurden die Nummern eingetragen. |
for i in 17 18 25 24 23 16 9 10 11 12 19 26 33 32 31 30 29 22 15 8 1 2 3 4 5 6 13 20 27 34 41 40 39 38 37 36 35 28 21 14 7 0 ; do echo "mpr:Q[$i] "; done | tr -d '\n' | pr -t |
mpr:Q[17] mpr:Q[18] mpr:Q[25] mpr:Q[24] mpr:Q[23] mpr:Q[16] mpr:Q[9]
mpr:Q[10] mpr:Q[11] mpr:Q[12] mpr:Q[19] mpr:Q[26] mpr:Q[33] mpr:Q[32]
mpr:Q[31] mpr:Q[30] mpr:Q[29] mpr:Q[22] mpr:Q[15] mpr:Q[8] mpr:Q[1]
mpr:Q[2] mpr:Q[3] mpr:Q[4] mpr:Q[5] mpr:Q[6] mpr:Q[13] mpr:Q[20] mpr:Q[27]
mpr:Q[34] mpr:Q[41] mpr:Q[40] mpr:Q[39] mpr:Q[38] mpr:Q[37] mpr:Q[36]
mpr:Q[35] mpr:Q[28] mpr:Q[21] mpr:Q[14] mpr:Q[7] mpr:Q[0]
Einsetzen dieser Namensliste an der Stelle an der steht |
convert deb6511.jpg -crop 30x25 -write mpr:Q -delete 0--1 deb6510.jpg mpr:Q[17] mpr:Q[18] mpr:Q[25] mpr:Q[24] mpr:Q[23] mpr:Q[16] mpr:Q[9] mpr:Q[10] mpr:Q[11] mpr:Q[12] mpr:Q[19] mpr:Q[26] mpr:Q[33] mpr:Q[32] mpr:Q[31] mpr:Q[30] mpr:Q[29] mpr:Q[22] mpr:Q[15] mpr:Q[8] mpr:Q[1] mpr:Q[2] mpr:Q[3] mpr:Q[4] mpr:Q[5] mpr:Q[6] mpr:Q[13] mpr:Q[20] mpr:Q[27] mpr:Q[34] mpr:Q[41] mpr:Q[40] mpr:Q[39] mpr:Q[38] mpr:Q[37] mpr:Q[36] mpr:Q[35] mpr:Q[28] mpr:Q[21] mpr:Q[14] mpr:Q[7] mpr:Q[0] -set delay 10 -loop 0 \( -clone 0 -set delay 80 \) -swap 0 +delete deb6520.gif |
Anderes Beispiel |
Wieder anderes Beispiel |
Man kann Bilder gruppieren mit -background none -flatten also zum Beispiel |
convert deb6511.jpg -crop 30x25 -write mpr:Q -delete 0--1 \( mpr:Q[26] mpr:Q[18] mpr:Q[10] mpr:Q[2] -background none -flatten \) +depth miff:- | montage - -tile 1x -geometry +6+6 -background khaki x: |
Durch diese Gruppenbildungen kann man wieder ganz andere
Übergänge erzeugen. Z.B. durch die Gruppen 0 14 28 \( mpr:Q[0] mpr:Q[14] mpr:Q[28] -background none -flatten \) 1 15 29 \( mpr:Q[1] mpr:Q[15] mpr:Q[29] -background none -flatten \) 2 16 30 \( mpr:Q[2] mpr:Q[16] mpr:Q[30] -background none -flatten \) 3 17 31 \( mpr:Q[3] mpr:Q[17] mpr:Q[31] -background none -flatten \) 4 18 32 \( mpr:Q[4] mpr:Q[18] mpr:Q[32] -background none -flatten \) 5 19 33 \( mpr:Q[5] mpr:Q[19] mpr:Q[33] -background none -flatten \) 6 20 34 \( mpr:Q[6] mpr:Q[20] mpr:Q[34] -background none -flatten \) 13 27 41 \( mpr:Q[13] mpr:Q[27] mpr:Q[41] -background none -flatten \) 12 26 40 \( mpr:Q[12] mpr:Q[26] mpr:Q[40] -background none -flatten \) 11 25 39 \( mpr:Q[11] mpr:Q[25] mpr:Q[39] -background none -flatten \) 10 24 38 \( mpr:Q[10] mpr:Q[24] mpr:Q[38] -background none -flatten \) 9 23 37 \( mpr:Q[9] mpr:Q[23] mpr:Q[37] -background none -flatten \) 8 22 36 \( mpr:Q[8] mpr:Q[22] mpr:Q[36] -background none -flatten \) 7 21 35 \( mpr:Q[7] mpr:Q[21] mpr:Q[35] -background none -flatten \) Alles in der gewünschten Reihenfolge zusammenkopiert |
convert deb6511.jpg -crop 30x25 -write mpr:Q -delete 0--1 deb6510.jpg \( mpr:Q[0] mpr:Q[14] mpr:Q[28] -background none -flatten \) \( mpr:Q[1] mpr:Q[15] mpr:Q[29] -background none -flatten \) \( mpr:Q[2] mpr:Q[16] mpr:Q[30] -background none -flatten \) \( mpr:Q[3] mpr:Q[17] mpr:Q[31] -background none -flatten \) \( mpr:Q[4] mpr:Q[18] mpr:Q[32] -background none -flatten \) \( mpr:Q[5] mpr:Q[19] mpr:Q[33] -background none -flatten \) \( mpr:Q[6] mpr:Q[20] mpr:Q[34] -background none -flatten \) \( mpr:Q[13] mpr:Q[27] mpr:Q[41] -background none -flatten \) \( mpr:Q[12] mpr:Q[26] mpr:Q[40] -background none -flatten \) \( mpr:Q[11] mpr:Q[25] mpr:Q[39] -background none -flatten \) \( mpr:Q[10] mpr:Q[24] mpr:Q[38] -background none -flatten \) \( mpr:Q[9] mpr:Q[23] mpr:Q[37] -background none -flatten \) \( mpr:Q[8] mpr:Q[22] mpr:Q[36] -background none -flatten \) \( mpr:Q[7] mpr:Q[21] mpr:Q[35] -background none -flatten \) -set delay 10 -loop 0 \( -clone 0 -set delay 80 \) -swap 0 +delete \( -clone -1 -set delay 80 \) +swap +delete deb6525.gif |
Anderes Beispiel |
Wieder anderes Beispiel |