ImageMagick nützliche Beispiele

Aus Linupedia.org
Version vom 27. April 2007, 20:53 Uhr von Robi (Diskussion | Beiträge) (Musterbilder erstellen)
Wechseln zu: Navigation, Suche
Hinweis:

Bitte vor Änderungen an diesem Artikel die Hinweise auf den Diskussionsseite lesen .


Befehlsbeispiele mit convert

einfaches Formatumwandlung und Scalierung

Ein Ursprungsbild im Format JPEG soll umgewandelt und gespeichert werden als PNG.
Das Ursprungsbild (hier bild.jpg) soll dabei erhalten bleiben. Der entstehende Bildtype wird durch die Endung des Ausgangsbildes (hier .png) vorgegeben.

convert bild.jpg bild.png 

Zusätzlich zu der Formatumwandlung möchten wir aber auch die Größe des Ausgangsbildes ändern. Wir möchten dabei das Seitenverhältniss des Orginalbildes jedoch beibehalten aber die Höhe und Breite auf jeweils 640 Pixel begrenzen. Hochkanntbilder haben dann 640 Pixel Höhe und normale Bilder haben 640 Pixel Breite, immer bei Beibehaltung der Seitenverhältnisse des Orginalbildes

convert bild.jpg -resize 640x640 bild.png

Um ein Bild unabhängig der Seitenverhältnisse auf eine ganz bestimmte Pixelgröße zu zwingen benutzt man ein Ausrufezeichen hinter der Größenangabe.

convert bild.jpg -resize 300x280! bild.png

Es ist auch möglich das Bild prozentuel zu vergößern oder zu verkleinern.

convert bild.jpg -resize 50% bild.png


Befehlsbeispiele mit mogrify

Befehlsbeispiele mit montage

Tricks und Tips für spezielle Aufgaben

Musterbilder erstellen

Hin und wieder braucht jemand von seinen Fotos für irgendwelche Zwecke Musterbilder. Diese Bilder sollen für andere zwar ansehbar und auch in einer geminderten Qualität aber nicht weiterverwendbar sein. Hier reicht es nicht aus, die Bilder am Rand zu beschriften oder irgendwo in die Ecke ein kleines Logo zu setzen. Es soll am besten ein riesen Logo quer über das Bild, damit man es nicht wegschneiden kann. Folgendes Script kann das erledigen.

#/bin/bash
# Das Script sucht im aktuellem Verzeichnis nach ".jpg"-endenden Dateien und nimmt an es handelt sich um Bilder
# von den Bildern werden Kopien definierter Groesse gemacht und mit Text-Wasserzeichen versehen
# den so enstehenden Kopien wird die Vorsilbe "muster_" vor den Dateinamen gegeben.
# erforderlich ist das Paket ImageMagick (Version 6)

FONT="/usr/X11/lib/X11/fonts/truetype/VeraBd.ttf" # Die Schriftart die Verwendung finden soll
FONTSIZE=120                                      # Die Schriftgroesse in Pixel (Werte 32 bis 120)
COPYRIGHT="* Muster *"                            # der Wasserzeichentext
SIZE="800x800"                                    # die Bildergroesse die entstehen soll
POS=Center                                        # Position des Wasserzeichens (Mitte=Center Unten=South Oben=North)
KOMPR=98                                          # jpeg Kompressionsfaktor [ 85 (normal) bis 98 (sehr gut)] 

# Infos zu den einzelnen Befehlen und weiteren Moeglichkeiten unter http://www.imagemagick.org/Usage

convert -font $FONT -pointsize $FONTSIZE -background black -fill white \
 label:"$COPYRIGHT" -trim +repage -bordercolor black -border 20x10 tmp_mask1.png

convert tmp_mask1.png -blur 0x03 -shade 135x45 -normalize tmp_shade135.png

convert tmp_mask1.png -font $FONT -pointsize $FONTSIZE -fill white -gravity center \
   -stroke white -strokewidth 3 -draw "text 0,0 \"$COPYRIGHT\"" tmp_mask2.png 

convert tmp_shade135.png tmp_mask2.png +matte -compose CopyOpacity -composite mask3d.png
rm tmp_mask1.png tmp_mask2.png tmp_shade135.png

for BILD in *.jpg
do
 composite mask3d.png "${BILD}" -resize $SIZE -gravity $POS -compose HardLight -quality $KOMPR muster_"$BILD"
done
rm mask3d.png


Der erste Teil des Scriptes ist dokumentiert. Hier werden die persönlichen Einstellungen gemacht. Aufgerufen wird das Script in dem Verzeichnis in dem die JPEG-Dateien liegen, von denen man die Muster braucht und zwar ohne irgend eine Option.

Musterbild erstellt mit Script
  • der erste convert Befehl erstellt eine Bildmaske aus dem Schriftzug Dateiname tmp_mask1.png
  • der zweite convert Befehl macht durch weichzeichnen Schatten und normalisieren daraus ein graues 3D-Schatten Bild Namens tmp_shade135.png
  • der dritte convert nimmt die erste Maske als Vorlage und schreibt die selbe Schrift nocheinmal aber etwas verbreitert darauf tmp_mask2.png
  • der vierte convert nimmt jetzt die 2 Maske und schneidet mit ihrer Hilfe das 3D Schattenbild aus, indem es den Rest unsichtbar macht.mask3d.png
  • die beiden Masken und das Schattenbild werden gelöscht, die brauchen wir nicht mehr.
  • in einer Schleife werden jetzt alle JPEG-Bilder einzeln mit mask3d.png überlagert und dabei ein verkleinertes Bild Namens muster_ALTERDATEINAME erstellt.
  • nach Abschluss der Schleife wird auch mask3d.png gelöscht.


Achtung: es ist nicht ganz sicher seit welcher Version von ImageMagick dieses Script funktioniert es wurde getestet SuSE 10.1 und neuer.




Farb und Kontrastverbesserung bei Unterwasserbildern

Obwohl diese Methode hier auch auf normale Bilder anwendbar ist, stellen wir sie unter der Überschrift Unterwasserbilder, da hier der Effekt sehr ausgeprägt auftritt.
Unterwasserbilder zB. mit einer UW-Digitalkamera gemacht, sehen im Display der Kamera ja noch recht ansehlich aus. Sobald man sie aber über den Computer ansieht, erkennt man das ganze Übel. Jetzt kommen nicht nur Unschärfe und Bewegungsunschäfe und das Plankton im Blitzlicht so richtig zu Geltung, nein je größer wir uns das Bild anschauen, je mehr fällt auf, dass auf sehr vielen Bildern die Farben in Richtung hellblau, hellgrün oder helllila verwaschen aussehen, der Farbkontrast fehlt und überhaupt alles trübe aussieht. Es ist überhaupt kein Vergleich mit dem was man gesehen hat und fotografieren wollte. Die Kamera ist hier oftmals unschuldig, es ist vielmehr das Auge und Hirn das viel diffenzierter und genauer für jeden Augenblick neu Weißabgleich und Farbkorrekturen vornimmt, und uns so Farben und Kontraste vorgaugelt, die keine Kamera der Welt derzeit genauso reproduzieren kann. Bei vielen dieser Fotos kann man das mit einer digitalen Farbkorrektur jedoch einigermaßen hinbiegen, und so doch noch sehr schöne Fotos zusammenzaubern die in etwa dem entsprechen was das Auge gesehen hat. Früher habe ich das mit Gimp gemacht, das war jedoch sehr mühsam. Seit IM v6.2.6 ist die richtige Option dafür auch in ImageMagick enthalten.

convert img_0.jpg -channel 'RGBA' -contrast-stretch 1% -quality 98 korrektur_0.jpg

Mittels convert wird vom Bild img_0.jpg mittels contrast-stretch eine Farbspreizung über RGB und den Alpha-Kanal vorgenommen. Das Ergebniss wird mit niedriger Komprimierung in korrektur_0.jpg abgelegt. Nicht alle Bilder lassen sich so direkt bearbeiten. Sind im Ausgangsbild sehr wenig unterschiedliche Farbbereiche vorhanden, dann wird diese Methode zu extrem. Es entstehen oftmals unnatürliche poppige Farben. Hier kann man folgendes versuchen, in dem mittels montage ein weiteres Bild mit breitem Farbbereich an das Bild angehängt wird und das so entstandene Doppelbild über contrast-stretch laufen läßt. Anschließend werden die Bilder wieder voneinander getrennt. Nach einigen Versuchen mit verschiedenen Bildern hat man oftmals dann doch noch ein einigermaßen brauchbares Bild.
links Orginalbild rechts nach Bearbeitung mit contrast-stretch