ImageMagick

Aus Linupedia
Wechseln zu: Navigation, Suche
ImageMagick
Imagemagick-logo.jpg
{{{Screenshot}}}
{{{Beschreibung}}}
Basisdaten
Entwickler: ImageMagick Studio LLC
Aktuelle Version: 6.3.3-9
letzte Veröffentlichung: 20.04.2007
Betriebssystem: Linux, Windows, Solaris, MacOS, FreeBSD
Kategorie: Grafik
Lizenz: GLP kompatibel
Deutschsprachig: Nein
Webseite: http://www.imagemagick.org


Was ist was kann ImageMagick

ImageMagick® ist ein Softwarepaket, zur Erstellung und Bearbeitung von Rastergrafiken. Es kann Bilder in eine Vielzahl gebräuchlicher Formate (derzeit ungefähr 100) einschließlich DPX, GIF, JPEG, JPEG-2000, pdf, PhotoCD, png, Postskriptum, SVG und tiff lesen, umwandeln und schreiben. Mit ImageMagick können zum Beispiel Bilder kombiniert, in andere Formate umgewandelt, gedreht, gespiegelt, zugeschnitten oder in der Größe verändert werden. Es lassen sich aber auch umfangreiche Manipulationen an den Bildfarben und verschiedene spezielle Effekte und Filter anwenden, oder Text, Linien, Polygone, Ellipsen und Bézier Kurven mit ImageMagick zeichnen. Die Funktionalität von ImageMagick wird gewöhnlich von der Kommandozeile oder aus Scripten heraus verwendet. Darüber hinaus bietet ImageMagick aber auch die Möglichkeit und Schnittstellen, um die Funktionen aus anderen Programmen und Programmiersprachen heraus, aufzurufen. Es lassen sich Bilder auch dynamisch erzeugen oder ändern, was es unter anderem für Webanwendungen sehr interessant macht. Einen kleinen Überblick über Möglichkeiten der Bildbearbeitung mit ImageMagick kann man sich auf der Beispielseite ansehen.

ImageMagick ist eine freie Software, die sowohl als fertige Programmpakete für eine ganze Reihe Betriebssysteme, sowie auch als Quellenprogrammpaket zur Verfügung steht, und die frei verwendet, kopiert, geändert und verteilt werden kann. Seine Lizenz ist mit GPL kompatibel. ImageMagick gibt es für alle verbreiteten Betriebssysteme.


Hier sind einige Beispiele aufgeführt, was man mit ImageMagick tun kann:

  • Formatumwandlung: ein Bild von einem Format in andere umwandeln (z.B. png zu JPEG)
  • Transformation: die Größe neu bestimmen, drehen, beschneiden, flippen oder trimmen
  • Bildtransparents: Teile eines Bildes unsichtbar machen
  • Zeichnen: Formen oder Text einem Bild hinzufügen
  • Dekorieren: einen Rand oder einen Rahmen einem Bild hinzufügen
  • Spezielle Effekte: Unschärfe, schärfen, Schwellenwerte anwenden oder abtönen eines Bildes
  • Mathematische Berechnungen: einen mathematischen Ausdruck auf ein Bild oder einzelne Bildkanäle anwenden
  • Text u. Anmerkungen: Schrift oder künstlerische Textverzierungen auf einem Bild einsetzen
  • Identifikation: das Format und die Attribute eines Bildes beschreiben oder auslesen
  • Animation: eine GIF Animation von einer Gruppe Bildern erstellen
  • Bildmontage: Überdeckung von Bildern oder Mischen der einzelnen Bildkanäle
  • Kombinationen: ein Set von Vorschaubildern zu einem Bild kombinieren
  • Unterstützung für große Bilder: Mega- und Gigapixel Bildgrößen lesen, verarbeiten oder schreiben

Installation

Wohl alle größeren Linux-Distributionen bringen fertige Installationspakete von ImageMagick mit. Eventuell muss das Paket von der Installations-DVD nachinstalliert werden. Die Installation über einen Paketmanager sollte kein Problem darstellen. Einer manuellen Installation mittels rpm-Kommando wird wegen vieler Abhängigkeiten abgeraten.
Paketname ist unter SuSE ImageMagick ( eines der wenigen Pakete mit Großbuchstaben im Namen )


Bemerkungen zu den Versionen

An ImageMagick wird zurzeit sehr viel und erfolgreich gearbeitet, das umfasst sowohl neue Funktionen und Methoden wie auch die Beseitigung von Bugs. Es ist also nicht verwunderlich, wenn fast wöchentlich eine neue Sub-Version auf den Download-Servern zu finden ist. (Changelog) Das hat aber nicht nur Vorteile. Nicht alles was man unter Beispiele findet, wird man auf seinem Rechner zum Laufen bekommen, da dort oftmals in den Beispielen die neusten Methoden vorgestellt und dokumentiert werden. Und hat man mit Hilfe der oben genannten Beispiele endlich sein Script so, dass es genau das macht, was man will, läuft das Script aber nicht zwangläufig auf dem nächsten Rechner auch, wenn dort noch eine ältere Version darauf ist. Einen sehr großen Sprung hat es zwischen der Hauptversion 5 und 6 gegeben. (Die Version 5 wurde z.B. noch unter Suse 9.1 ausgeliefert) Hier kann man davon ausgehen, dass einige Befehle und Optionen und somit ganze Scripte zwischen beiden Hauptversionen überhaupt nicht kompatibel ist. Eine Erklärung warum das notwendig war, kann man nachlesen unter why. Man sollte sich also überlegen, mit welcher Version man komplizierte Scripte und Konzepte mit ImageMagick entwickeln will, die dann auch auf anderen (eventuell unter älteren Versionen) Rechnern laufen sollen. Im Zweifelsfall sollte man daran denken, bei der Weitergabe komplizierter Scripte einen Verweis auf die eigene verwendete Version von ImageMagick zu hinterlegen. Als Anhaltspunkte hier die ausgelieferten Versionen von openSUSE. (Es werden bei den default-Onlineaktualisierungen von openSUSE auch keine neuen Versionen installiert sondern lediglich Erneuerungen bei Sicherheitsproblemen oder schwerwiegenden Fehlern durchgeführt.)

Unter Suse sind folgende Versionen von ImageMagick ausgeliefert worden:

  • SuSE 10.0: 6.2.3
  • SuSE 10.1: 6.2.5
  • openSUSE 10.2: 6.3.0
  • aktuell: Version (22.04.2007) 6.3.3

ImageMagick selbst kompilieren

ImageMagick selbst zu kompilieren geht nach dem berühmten 3-Satz wie hier beschrieben. das configure-Script ohne besondere Optionen wird sich auf dem Rechner nach jeder Menge Library und Header-Dateien umschauen, und dementsprechend ImageMagick konfigurieren. Sobald configure fehlerfrei beendet wurde, sollte man sich dessen Ausgabe, insbesondere folgenden Abschnitt, etwas genauer anschauen:

ImageMagick is configured as follows. Please verify that this configuration
matches your expectations.

Host system type : i686-pc-linux-gnu

                  Option                        Value
-------------------------------------------------------------------------------
Shared libraries  --enable-shared=yes           yes
Static libraries  --enable-static=yes           yes
Module support    --with-modules=yes            yes
GNU ld            --with-gnu-ld=yes             yes
Quantum depth     --with-quantum-depth=16       16

Delegate Configuration:
BZLIB             --with-bzlib=yes              yes
DJVU              --with-djvu=yes               yes
DPS               --with-dps=yes                no
FlashPIX          --with-fpx=no                 no
FontConfig        --with-fontconfig=yes         yes
FreeType          --with-freetype=yes           yes
GhostPCL          None                          pcl6 (unknown)
Ghostscript       None                          gs (8.15.3)
Ghostscript fonts --with-gs-font-dir=default    /usr/share/ghostscript/fonts/
Ghostscript lib   --with-gslib=yes              no (failed tests)
Graphviz          --with-gvc=yes                no
JBIG              --with-jbig=yes               no
JPEG v1           --with-jpeg=yes               yes
JPEG-2000         --with-jp2=yes                yes
LCMS              --with-lcms=yes               no
Magick++          --with-magick-plus-plus=yes   yes
PERL              --with-perl=yes               /usr/bin/perl
PNG               --with-png=yes                yes
RSVG              --with-rsvg=yes               yes
TIFF              --with-tiff=yes               yes
Windows fonts     --with-windows-font-dir=      none
WMF               --with-wmf=yes                        yes
X11               --with-x=                     yes
XML               --with-xml=yes                yes
ZLIB              --with-zlib=yes               yes

hier hat das Script entsprechend der Tools und Dateien, die es auf dem Rechner gefunden hat, die Konfiguration der optional-Features und optionalen Pakete zusammengefasst. Ist hier bei einer gewünschen Option ein no oder none eingetragen, sollten man mit dem Paketmanager die entsprechenden Devel-Pakete oder gar die entsprechenden Libray- oder Programmpakete nachinstallieren und configure noch einmal laufen lassen.

Schnittstellen zu anderen Programmen oder Programmiersprachen

Zur Zeit sind folgende Interface für ImageMagick bekannt.



Die Befehle von ImageMagick

convert

convert ist das wohl wichtigste Kommando innerhalb ImageMagick. Die meisten Operationen können mit diesem Kommando gemacht werden.

Convert kennt eine Unmenge an Operatoren, Settings und Kombinationen die auf ein oder mehrere Eingangsbilder sowohl einzeln oder in Kombinationen Anwendung finden können, um dann daraus ein oder mehrere Ausgangsbilder zu erstellen. Und damit noch lange nicht genug kann convert auch mit einer Befehlszeile ganze Sequenzen von Bilder verarbeiten, oder intern in fast beliebiger Schachtelungstiefe Zwischenbilder in eine Stack speichern, um sie von dort aus in eine der nächsten Teilschritte weiterzuverarbeiten. Eine Einführung in die Kommandostruktur und deren Möglichkeiten kann hier nachgelesen werden.

Mit convert können unter anderem Kopien von Bilddateien in andere Bildformate oder Farbtiefen hergestellt werden, es können die Größe der Bilder verändert, Bilder gedrehen, gespiegeln oder verzerren werden, Bildteile herausgeschnitten, oder weggeblendet werden, Rahmen und Hintergrund der Bilder kann gestaltet werden, es können Bilder beschriftet oder es kann mit den Zeichnenwerkzeugen oder nur durch pure Mathematik Zwischenbilder oder Bildmasken für die weitere Bildverarbeitung neu erstellt werden. Es konnen mehrere Bilder zu einen Bild montiert und dabei die Farbkanäle der einzelnen Bilder auf die unterschiedlichste Art beeinflußt werden. Es können animierte Bilder erzeugt und bearbeitet werden, und es können Fotos be- und überarbeitet werden mit so ziemlich allen Funktionen die grafische Bildbearbeitungsprogramme auch haben, und und und.
Das Wichtigste: die Ursprungsbilder werden mit convert nicht überschrieben und bleiben erhalten wie sie sind, und es werden dabei immer neu Bilddateien erzeugt.

Die Möglichkeiten und Kombinationsmöglichkeiten dieses Kommandos sind schier unüberschaubar. Leider ist die Verständlichkeit und Übersichtlichkeit der einzelnen Kommandos dann manchmal auch nicht mehr überschaubar.
Wer sich damit näher damit befassen möchte dem sei die Beispielseite von Anthony Thyssen empfohlen. Für alle anderen eine kleine Seite mit nützlichen Beispielaufrufen und Kommentaren zu den Befehlen.

mogrify

mogrify ist in vielerlei Hinsicht gleich dem Kommando convert. Die Optionen sind auch analog denen von convert. Mogrify arbeitet jedoch immer ein Bild nach dem anderen ab, und nicht alle Funktionen von convert sind somit damit machbar. Der Hauptunterschied besteht jedoch darin, dass mogrify, wenn wir es ihm nicht explizid anweisen wird, die Ursprungsdatei überschreibt. Die Änderungen werden also unter dem Namen der Ursprungsdatei abgespeichert. Aus diesem Grunde sollte man mit mogrify sehr bedacht umgehen, und von den Dateien Kopien vor der Bearbeitung erstellt haben. Der Befehl eignet sich also immer dort, wo Dateien gleich an Ort und Stelle bearbeitet werden sollen, ohne dabei extra neue Dateien anzulegen.

Achtung:

der Umgang mit dem Befehl mogify ist gefährlich, da in der Vielzahl der Fälle das Ergebnisbild unter den selben Namen wie das Ursprungsbild abgelegt wird. Man sollte unbedingt vorher Sicherheitskopien der Bilder anfertigen


Einige einfache Beispiele für die Benutzung dieses Programmes


montage

Montage ist ein weiteres Kommando zur Bildbearbeitung, das unter anderem auch eine Vielzahl Optionen von convert verarbeiten kann. Es wurde jedoch speziell für die Erzeugung von Thumbnails von Bildern und deren Gruppierung und Gruppenansicht entwickelt. Darüber hinaus wird montage vor allem dort verwendet, wo mehrere Bilder aneinander gereiht und so zu einem einzigem Bild zusammengesetzt werden sollen. Für einige Spezialanwendungen wie zB. Textgenerierung aus verschiedenen Fonts und ähnlichem, ist es sehr gut geeignet.

Hinweis:

die Optionen und Möglichkeiten dieses Befehles sind in den Hauptversionen 5 und 6 sehr unterschiedlich.


Einige einfache Beispiele für die Benutzung dieses Programmes


composite

composite ist ein sehr spezielles Kommando, dessen Funktionen sich auch aus den anderen Programmen von ImageMagick aufrufen lassen. Es ermöglicht die verschiedensten Methoden des mischens und überlagerns von 2 und mehreren Bildern. Die Funktionen gehen zT. hier weit über das Maß hinaus, dass man von einem normalem Grafikbearbeitungsprogramm erwarten würde. Die Anwendung dieses Befehles oder seiner Funktionen setzt ein grundlegendes Wissen über Bildformate, Farbräume, Farben und Techniken voraus, und/oder kostest sehr viel Zeit beim ausprobieren und testen. Mit diesem Befehl beginnt wohl die Zauberei in der Grafikbearbeitung.

An dieser Stelle kann hier für Möglichkeiten und weiterreichende Informationen nur auf Beispielseiten verwiesen werden, auch wenn hier und da in den Befehlsbeispielen hier im Wiki die eine oder andere Funktion dieses Befehles genutzt wird.


display

Das Tool display dient wie es der Name vermuten lässt zum Anzeigen von Bildern auf der X11 Oberfläche. Darüberhinaus ist aber display ein komplettes Bildbearbeitungsprogramm mit einer, wenn auch dürftigen, grafischen Oberfläche. Ein großer Teil der Einzeloperationen von convert lassen sich über eine Menüführung oder über Tasten interaktiv aufrufen. Eine umfangreiche ausführliche Erklärung über alle Funktionen von display erhaltet ihr in dieser Manpage ( die mit den Paketen oder aus dem Quelltext derzeitig installierbaren Manpages sind bei weitem nicht so umfangreich )

Man kann also durchaus mit display seine Bilder erstellen, bearbeiten, drucken und speichern, ebenso kann man die einzelnen Optionen erst einmal mit grafischer Unterstützung ausprobieren, die man zB. in Scripten zusammenfassen möchte. display kann auch von der Standarteingabe lesen, wenn ihm bekannt ist, welches Format er hierüber erhält. Damit lassen sich die Ausgabebilder der einzelnen Tools von ImageMagick durch eine Pipe zu display schicken und sich das Ergebnis anschauen, eh man jedesmal bei jedem Versuch das Ergebnisbild erst auf die Festplatte schreibt, um es dann von dort mit display anzeigen zu lassen.

convert bild.jpg -resize 50% gif:-  | display gif:-

hier wird in diesem Befehlsbeispiel convert mitgeteilt, Ausgabefile: gif:- was nicht anderes bedeutet wie Format "gif" an die Standartausgabe. display bekommt die selbe Information und interpretiert dieses dann anzuzeigendes Bild: Standarteingabe in Format "gif".


animate

Beim selbstgestalten oder bearbeiten von animierten Bildern hat man das Problem, wo kann man seine Zwischenergebnisse oder die gesammte Animation jetzt anschauen? display liefert hier auch nur ungenügende Ergebnisse, andere Programme eventuell nur das erste Bild der Animation, und die dafür vorgesehenen Plugins und Programme zur Wiedergabe, haben keine Möglichkeit des manuellen Eingreifens in den Ablauf. Hierfür ist bei ImageMagick das Progamm animate gedacht. Mit animate lassen sich sowohl fertige Animationen, sowie auch Einzelbilder als Animation auf einer X-Oberfläche anzeigen.
Mit ein paar Tasten < > 'SPACE' ? 'F1' lässt sich auch die Geschwindigkeit ändern oder auf Einzelbildmodus umschalten, Bildinformationen ansehen oder Hilfe holen. Die Rechte Maustaste öffnet ein Service-Menü, damit kann man dieses und noch einiges mehr, dann auch noch übersichtlich mit der Maus steuern. Mit einer Reihe von Optionen beim Start lassen sich dann noch einige Feineinstellungen oder Effekte erreichen.
Das einfache Abspielen einer animierten GIF ist recht simpel: unter KDE oder Gnome aus einem Terminal heraus einfach

animate datei.gif

Weitere Informationen zu animate


import

Mit dem Befehl import können vom X-Server Screenshots erstellt werden. Es können der gesamte Desktop einzelne Fenster oder frei definierte Bereiche als Bild abgespeichert werden, siehe dazu auch die Kurzbeschreibung. Ein ganze Reihe von Optionen ermöglicht es dabei auch gleich bestimmte Bearbeitungsschritte, die man sonst später noch machen müsste, gleich mit zu erledigen, zB eine transparente Farbe, die richtige Größe und Auflösung, Farbtiefe und vieles mehr. Dabei kann das automatisch, verzögert, auf Mausklick ausgelöst, oder gleich mehrfach als Serienbild aufgenommen werden, um dann daraus zB. einen Film zu machen.


identify

Um mehr über ein Bild oder mehrere Bilder zu erfahren, dazu gibt es den Befehl identify. mit diesem Befehl lassen sich Format und Eigenschaften eines Bildes anzeigen. Defekte oder unvollständige Bilder werden hier ebenso als solche erkannt.

identify BILDERNAME

gibt uns im wesentlichen einen kurzen Überlick über Bildtyp, Bild- und Datengröße, Farbe

identify -verbose BILDERNAME

gibt uns die kompletten detailierten Daten die in diesem Bild gespeichert sind, einschließlich eventueller EXIF
Durch eine Reihe von zusätzlichen Parametern lassen sich auch gezielt wichtige Paramerter direkt abrufen, ohne sie erst noch aus dieser Liste ausfiltern zu müssen. Die wichtigsten Informationen kann man alle mit der Option -format gezielt auslesen zB. um nur die Größe eines Bildes zu ermitteln

# identify -format "%wx%h" img_0002.jpg
2560x1920

und um die Druckgröße eines Bildes bei 96dpi ( 96 Pixel je Zoll )zu errechnen

# identify -format "%[fx:w/96*2.54] cm  X %[fx:h/96*2.54] cm" img_0002.jpg
67.7333 cm  X 50.8 cm

Für weiter Informationen zu allen Optionen kann diese Startseite genutzt werden.


conjure

conjure ist ein spezielles Tool von ImageMagick, mit dessen Hilfe Bildbearbeitung mittels Script möglich ist. Script bedeutet hier allerdings nicht Shellscript sondern eine auf XML basierende spezielle Script Sprache MSL ( Magick Scripting Language ). Eine kurze Beschreibung gibt es hier nähere Informationen zu MSL sind auch im Internet auf die Schnelle nicht zu finden, wer sich damit befassen möchte kann dieses HOWTO anschauen, inwieweit es kompatibel ist, ist nicht bekannt. Ansonsten sollen in der Datei coders/msl.c lt. ImageMagick nähere Informationen zu MSL sein. Aus der Dürftigkeit der Informationen muss man schließen, dass conjure weniger gebräuchlich ist.


compare

compare ist ein Programm mit denen 2 Bilder mathematisch vergleichen werden können. Das macht nur Sinn zwischen gleichen Bildern, also Orginalbild und Bild nach Bearbeitung. Damit läßt sich zB. feststellen, wo bestimmte Filter oder Funktionen auf das Bild eingewirkt haben, wenn die rein optischen Veränderungen nur sehr gering sind.


mit diesem kleinem Beispiel läßt sich nachweisen, dass bei jeder Bearbeitung von JPEG die Qualität ein klein wenig schlechter wird, weil ein komplettes decode und re-encode des Formates durchgeführt wird.

 convert logo: -quality 100 test.jpg
 cp test.jpg test1.jpg
 mogrify -set comment 'Das ist eine Testdatei' test1.jpg
 compare test1.jpg test.jpg png:- | display png:-

Erklärung:

  • aus dem integrierten ImageMagick-Logo erstellen wir ein JPEG mit niedrigst möglicher Kompression
  • wir kopieren diese Datei über das Betriebssystem (damit sind beide absolut identisch)
  • in der Bildkopie schreiben wir nur einen Kommentar in die Bild-Eigenschaften
  • danach überprüfen wir die beiden Bilder auf Unterschiede und lassen sie uns mit display anzeigen.

( Differenzen zwischen den Bildern sind als rote Punkte gekennzeichnet, zum Vergleich könnt ihr das gleiche noch einmal aber mit -quality 50 testen )

Weitere Beispiele für compare in der Befehlsbeschreibung


xtp

Mit ImageMagick installiert man sich gleichzeitig noch das Tool xtp. Es handelt sich hier um ein Tool für Filetransfer mit ähnlichen Funktionen wie ftp, es kommt ohne Interaktivität mit dem User aus. Es ist vieleicht am ehesten vergleichbar mit wget.
Jetzt ist es zwar schön zu wissen, das man dieses Programm auf dem Rechner hat, doch wozu und warum wurde es mit ImageMagick installiert? Die Funktionen dieses Programmes können die Tools von ImageMagick bei Bedarf automatisch aufrufen. Das bringt den Vorteil, wir können mit ImageMagick direkt auf die Bilder im Internet zugreifen. Es entfällt das manuelle lästige Downloaden und zwischenspeichern von Bilddateien. Einfach im Browser die Bildadresse kopieren und in die Befehlszeile einsetzen.


Beispiele:

  • Bild aus dem Internet direkt mit convert bearbeiten und das Ergebnis ansehen
convert http://www.linux-club.de/images/konqui.gif -mattecolor tomato -frame 9x20+4+0 png:- | display png:-
  • man möchte wissen welche EXIF-Informationen man mit seinen Bildern im Internet veröffentlicht
identify -format "%[EXIF:*]" http://www.linux-club.de/wiki/images/Musterbild.jpg

Links