Zaubern mit Bildern auf der Shell
ArticleCategory: [Es gibt verschiedene Artikel Kategorien]
Graphics
AuthorImage:[Ein Bild von Dir]
TranslationInfo:[Autor und Übersetzer]
original in en Katja
Socher
en to de Katja Socher
AboutTheAuthor:[Eine kleine Biographie über den
Autor]
Katja ist die deutsche Redakteurin von LinuxFocus. Sie mag Tux, Film &
Fotografie und das Meer. Ihre Homepage befindet sich hier.
Abstract:[Hier sollte eine kleine Zusammenfassung stehen]
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.
ArticleIllustration:[Das Titelbild des Artikels]
ArticleBody:
Zaubern
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:
Die Zutaten
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.
Display: Wenn man "display &" eintippt, erscheint ein
display-Bildschirm und man kann direkt an den Bildern arbeiten. �ber das
Men� kann man eine Datei �ffnen, abspeichern oder l�schen, sie drehen oder
rotieren, �nderungen an der Farbe vornehmen oder bestimmte Effekte, z.B.
implode, emboss, anwenden, einen Rahmen um das Bild machen und mehr.
Mit Import kann man Screenshots des gesamten Bildschirms oder von
bestimmten Bildern oder Fenstern machen.
Animate ist ein Animationswerkzeug. Man kann eine Reihe von Bildern
ausw�hlen, die dann eines nach dem anderen gezeigt werden oder man kann
sich eine gif-Animation anschauen.
Mit Montage kann man z.B. ein gefliestes Bild erstellen oder ein
Bild, auf dem man alle einzelnen Bilder eines animierten gif- Bildes sehen
kann.
Convert ist ein sehr m�chtiges Werkzeug. Man kann ein Bild in ein
anderes Format umwandeln, z.B. ein gif Bild in ein jpg Bild oder umgekehrt,
man kann die Gr��e des Bildes ver�ndern und auch eine Menge Effekte, z.B.
eine Kohlenzeichnung machen, auf die Bilder anwenden.
Mogrify ist sehr �hnlich zu convert mit dem gro�en Unterschied, da�
man mit mogrify das bearbeitete Bild �berschreibt, w�hrend man bei convert
und den anderen Werkzeugen eine Datei angeben mu�, in die das ver�nderte
Bild gespeichert wird. Deshalb benutze ich es fast nie.
Identify gibt dir Informationen �ber das Bild, wie seine Geometrie,
Gr��e, Name, Format etc.
Combine kombiniert zwei oder mehr Bilder zu einem neuen Bild. Man
kann z.B. ein Logo in ein anderes Bild einf�gen.
Um die Werkzeuge zu benutzen, tippt man den Namen des Werkzeuges, gefolgt
von der Option, die man benutzen will, das Bild das bearbeitet werden soll
und den Dateinamen, unter dem das ver�nderte Bild gespeichert werden soll.
Z.B. wenn du aus tux1.gif eine Kohlezeichnung mit dem Faktor 3 machen
und es unter tux1characoal.gif abspeichern willst, schreibst du:
convert -characoal 3 tux1.gif tux1characoal.gif
Nachdem wir uns jetzt die Zutaten angeschaut haben, la�t uns jetzt ein paar
Zauerbtricks probieren:
Einige Zauberspr�che
Ver�ndern der H�he und Breite deiner Bilder
Stell dir vor, du hast einen Sto� Bilder mit den letzten Opfern, die du in
einen Frosch verwandelt hast und du m�chtest sie auf deine Webpage packen.
Um die Ladezeit zu verk�rzen, m�chtest du deine Bilder verkleinern. .
Mit convert kannst du deine Bilder vergr��ern oder verkleinern oder
Thumbnails daraus generieren.
Der Befehl
convert -geometry 60x80 image.gif out.gif
ver�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.
Um alle deine Bilder z.B. in einem Schritt auf eine H�he und Breite von 80
zu bringen, schreibst du:
#!/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.)
Erstellen von �berblicksbildern
Du hast eine CD mit einer Sammlung aller Leute, die du in den letzten Jahren
in Fr�sche verwandelt hast. Jetzt will dein rivalisierender Zauberer, der
sehr neidisch auf dich ist, den Beweis, da� du sogar schon einmal seinen
Hund in einen Frosch verwandelt hast. Und jetzt verbringst du den ganzen Tag
damit, nach diesem Foto zu suchen. Dies h�tte vermieden werden k�nnen, wenn
du ein �berblicksbild mit allen Bildern auf deiner CD gehabt h�ttest. Mit
Image Magick ist es sehr einfach, eins zu erstellen:
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.
Mit einem rechten Mausklick auf irgendeines der Bilder bekommt man ein Men�,
wo man "Load" ausw�hlen kann, um das Bild in seiner vollen Gr��e zu sehen.
Dies ist ein sehr einfacher Weg, um ein �berblicksbild zu erstellen, aber
abh�ngig von deinem Computer dauert es einige Zeit, bis das visual image
directory erstellt ist und es verbraucht eine Menge Speicher, wenn man eine
gro�e Anzahl an Bildern hat. Deshalb werden wir jetzt ein kleines
htmlthumbnails Skript schreiben, da� hierbei weniger verlangt und dann eine
Webseite bauen, wo du auf jedes Thumbnail klicken kannst und das
Originalbild erh�lst.
Der html-Code hierf�r sieht so aus:
<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.
Jetzt schreiben wir ein Skript, da� die Thumbnails generiert und den
html-Code f�r uns schreibt.
for f in $* ;do
convert -geometry 80x80 $f t_$f
echo "<a href=\"$f\"><img src=\"t_$f\" width=\"80\" height=\"80\">"
done
Das 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.
F�r das vollst�ndige Shellskript f�gen wir einen kleinen Hilfstext und eine
Fehler�berpr�fung hinzu. Hier ist unser komplettes Shellskript,
htmlthumbnails :
htmlthumbnails
(html zum Anschauen), htmlthumbnails
(Text zum Herunterladen)
Ver�ndern des Bildformats
Convert kann nicht nur die Gr��e eines Bildes ver�ndern, sondern auch sein
Format. Z.B. kann man ein gif Bild in ein jpg Bild umwandeln und umgekehrt.
Der Befehl daf�r lautet einfach:
convert image.gif image.jpg
Convert erkennt an der Extension des Dateinamens welches Format es benutzen
mu�.
Um das Bildformat einiger Bilder von jpg in gif zu verwandeln, benutze:
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
done
Es gibt auch noch eine Menge anderer Formate, die ImageMagick ebenfalls
kennt.
Ein Logo in alle deine Bilder einf�gen
Wir w�rden gern ein kleines Logo, wie du es rechts sehen kannst, in eine
Anzahl von Bildern einf�gen.
Dieses Logo sollte ein kleines transparentes gif Bild sein. Unser Logo
sollte wie eine kleine Signatur in der unteren rechten Ecke des Bildes
plaziert sein, wie du es in dem folgenden Tuxbild sehen kannst:
Wie lautet der Befehl, um dies zu tun?
Combine kann dazu benutzt werden, um zwei Bilder in ein neues zu
kombinieren. Verschiedene Optionen sagen dem Programm, wie es das tun mu�:
combine -gravity SouthEast -compose Over img.jpg logo.gif stamp_img.jpg
Die 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.
Um ein voll funktionierendes Shellskript zu bekommen, packen wir den Befehl
in eine for-Schleife und f�gen wieder einen kleinen Hilfetext und eine
Fehler�berpr�fung hinzu. Hier ist unser komplettes Shellskript,
stampimages :
stampimages
(html zum Anschauen), stampimages(Text zum Herunterladen)
Informationen �ber die Bildeigenschaften erhalten
Identify zeigt Details �ber den Typ deiner Bilder, ihre Gr��e und ihrer
Geometrie an. Dies sieht z.B. wie folgt aus:
identify image.jpg
ergibt
image.jpg 340x254 DirectClass 13939b JPEG 0.1u 0:01
Was 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
340x254
Jetzt 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 :
imgsrcline
(html zum Anschauen), imgsrcline (Text zum
Herunterladen)
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�!
Referenzen
- Installation: Wahrscheinlich ist Image Magick schon auf deinem System
installiert, da es nomalerweise in den g�ngigen Linuxdistributionen mit
dabei ist. Aber f�r den Fall, da� es nicht installiert ist oder du eine
neuere Version haben m�chtest, kannst du es von:
http://www.imagemagick.org/
herunterladen
- F�r weitere Informationen �ber die Werkzeuge von Image Magick kannst
du die man pages befragen (z.B. tippe man convert, um mehr �ber convert
herauszufidnen) oder denselben Text auf ihrer Webseite lesen.
- Wenn du noch nicht mit Shell Programmierung vertraut bist, la� google
einfach nach bash suchen und du solltest einige Tutorialen finden, die f�r
dich geeignet sind. Oder du kannst bis zur n�chsten Ausgabe von LinuxFocus
warten und dort einen Artikel �ber Shell Programmierung lesen.