|
|
Dieses Dokument ist verfübar auf: English Castellano Deutsch Francais Nederlands Portugues Russian Turkce |
von Katja Socher <katja(at)linuxfocusorg> Über die Authorin: Katja ist die deutsche Redakteurin von LinuxFocus. Sie mag Tux, Film & Fotografie und das Meer. Ihre Homepage befindet sich hier. Übersetzt ins Deutsche von: Katja Socher <katja(at)linuxfocus.org> Inhalt: |
Zusammenfassung:
In diesem Artikel schauen wir uns einige Zaubersprüche an, die der ImageMagick Zauberer durch Benutzen einer Sammlung von graphischen Werkzeugen als Zutaten und der Shell als seinen Zauberstab, machen kann.
Früher nahmen die Zauberer ihre Zutaten, rührten sie in einem großen Topf
zusammen, schwangen ihren Zauberstab, murmelten ihre Zaubersprüche...
und plötzlich war jemand in einen Frosch verwandelt. In unserer
modernen Zeit sind die Zauberer wie jeder andere in unserer Gesellschaft
hochspezialisiert und ihre Zauberbücher enthalten nur einige wenige
brauchbare Zaubersprüche für sehr spezielle Aufgaben. Deshalb ist
ImageMagick kein Zauberbuch für den allgemeinen Gebrauch. In vielen Aspekten
kann es mit The Gimp oder vielen anderen Graphikprogrammen nicht
konkurrieren, aber es hat einige spezielle Features, die sehr nützlich sind.
Seine wirkliche Stärke liegt in der Möglichkeit, viele seiner Prozesse zu
automatisieren, wenn man auf der Shell arbeitet.
Aber bevor wir dir jetzt einige Zaubersprüche verraten, laßt uns zuerst einen
kurzen Blick auf die Zutaten werfen:
oder Was ist ImageMagick?
ImageMagick ist eine Sammlung von graphischen Werkzeugen zum Bearbeiten von Bildern. Die Werkzeuge sind display, import, animate, montage, convert, mogrify, identify und combine.convert -geometry 60x80 image.gif out.gifverändert das Bild image image.gif auf eine Breite von 60 und eine Höhe von 80 und speichert das sich ergebende Bild in out.gif ab.
#!/bin/sh for f in $* ;do convert -geometry 80x80 $f t_$f echo "<a href=\"$f\"><img src=\"t_$f\" width=\"80\" height=\"80\"></a>" done # end of script(Tippe diese Zeilen in irgendeinen Texteditor deiner Wahl (vi, emacs, nedit, kedit...) und speichere sie unter mksmallimage in deinem home Verzeichnis. Dann gehe zur Bash shell und tippe
chmod 755 /home/katja/mksmallimage(benutzt den Namen deines home Verzeichnisses anstelle von katja). Dann kannst du das Skript durch Tippen von z.B. /home/katja/mksmallimage xxx.jpg *.gif benutzen. Es verändert alle gif Dateien plus die xxx.jpg Datei.)
display "vid:*.jpg"Dies erstellt ein visual image directory von allen deinen jpg Bildern im aktuellen Verzeichnis. Oder:
display "vid:frog/*"erstellt ein visual image directory aller deiner Bilder im Verzeichnis frog.
<a href="file.gif"><img src="t_file.gif" width="60" height="80"></a>Die Originaldatei ist hier file.gif und das Thumbnail ist t_file.gif.
for f in $* ;do convert -geometry 80x80 $f t_$f echo "<a href=\"$f\"><img src=\"t_$f\" width=\"80\" height=\"80\">" doneDas obige Skript läßt eine Schleife über alle Bilder laufen wie auf der Kommandozeile spezifiziert, generiert die Thumbnails und schreibt den html-Code auf den Bildschirm. Wir können den html-Code dann mit copy & paste in unsere Webseite schreiben.
convert image.gif image.jpgConvert erkennt an der Extension des Dateinamens welches Format es benutzen muß.
for f in $* ;do if echo "$f" | grep -i "jpg$" > /dev/null ; then gif=`echo "$f" | sed 's/jpg$/gif/i'` echo "converting $f to $gif ..." convert 80x80 $f $gif else echo echo "$f is not a jpg file, ignored" fi doneEs gibt auch noch eine Menge anderer Formate, die ImageMagick ebenfalls kennt.
combine -gravity SouthEast -compose Over img.jpg logo.gif stamp_img.jpgDie Option "gravity SouthEast" plaziert das logo.gif in die untere rechte Ecke. "compose Over" sagt, daß wir das Bild an den Stellen, wo sie sich überlappen, durch das Logo ersetzen.
identify image.jpg ergibt image.jpg 340x254 DirectClass 13939b JPEG 0.1u 0:01Was kann unser Zauberer damit machen? Nun, um gute Webseiten zu designen, die schon Bilder zeigen, während die Seite noch geladen wird, sollte man die genaue Geometrie für alle Bilder angeben. Der html-Code dafür sähe z.B. so aus:
<img src="image.jpg" width="340" height="254" alt="[sample picture]">Wenn unsere Bilder verschiedene Größen haben und wir die genaue Höhe und Breite jedes einzelnen nicht kennen, können wir uns von identify helfen lassen. Wir schreiben ein Shellskript, das die Ausgabe von "identify" liest und dann die Zeile ausdruckt. Die Geometrie des Bildes ist der zweite Parameter in der Ausgabezeichenkette des Identifyprogramms. Um diesen Parameter zu bekommen, benutzen wir den Befehl awk:
identify image.jpg | awk '{print $2}' results in 340x254Jetzt müssen wir die Geometrie in die Breite und Höhe aufsplitten. Dies kann mit:
echo 340x254 | sed 's/[^0-9]/ /g' | awk '{print $1}'gemacht werden, wodurch man die Breite erhält. Die Höhe bekommt man durch:
echo 340x254 | sed 's/[^0-9]/ /g' | awk '{print $2}'Konzentriere dich nicht zu sehr auf die genauen Shellbefehle. Wenn du sie jetzt noch nicht vollständig verstehst, nimm sie als gegeben hin. In der nächsten Ausgabe von LinuxFocus wird es einen Artikel über Shell Programmierung geben, in dem wir ihre ganze Magie erklären. Das komplette Shellskript sieht wie folgt aus:
file=$1 geometry=`identify $file | awk '{print $2}'` # geometry can be 563x144+0+0 or 75x98 # we need to get rid of the plus (+) and the x characters: width=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $1}'` height=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $2}'` echo "<img src=\"$file\" width=\"$width\" height=\"$height\">"Um das vollständige Shellskript zu bekommen, fügen wir wieder einen Hilfstext und eine Fehlerüberprüfung hinzu. Hier ist unser fertiges Shellskript, imgsrcline :
Während ich mit ImageMagick herumgespielt habe, habe ich manchmal Diskrepanzen zwischen der Dokumentation und der tatsächlichen Funktionalität bemerkt. Einige Features sind auch nicht sehr stabil. Wenn du dich jedoch an die hier vorgestellten Dinge hälst, wirst du sehen, das es sehr nützlich ist. Die oben aufgeführten Beispiele funktionieren. Ich habe ImageMagick-4.2.9 , ImageMagick-5.2.9 und ImageMagick-5.3.0 benutzt und die Dinge, die du hier gelernt hast, haben in all diesen Versionen funktioniert.
Ich hoffe, du hast einen Eindruck bekommen, was man mit ImageMagick
machen kann und wirst die Skripte benutzen oder sogar anfangen, eigene
Zaubersprüche zu erfinden.
Viel Spaß!
|
Der LinuxFocus Redaktion schreiben
© Katja Socher, FDL LinuxFocus.org Einen Fehler melden oder einen Kommentar an LinuxFocus schicken |
Autoren und Übersetzer:
|
2002-02-24, generated by lfparser version 2.27