ImageMagick

Aus Colliseum
Version vom 26. Dezember 2019, 21:11 Uhr von Whugemann (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Grundsätzliches

ImageMagick ist ein kostenloses, Kommandozeilenrogramm (»DOS-Programm«) zur Bildbearbeitung, das auf vielen Internet-Servern eingesetzt wird. Es lässt sich jedoch auf normalen Windows-Rechnern installieren und auch in der Unfallrekonstruktion sinnvoll einsetzen. Das Programm wird in einer DOS-Box aufgerufen und über die Kommandozeilenparameter gesteuert und offenbart seine Stärken erst bei der standardisierten (Stapel-) Verarbeitung von Bildern, speziell Fotos: Gerade weil die Bedienung so kryptisch ist, garantieren einmal erstellte Skripte, dass die entsprechende Operation stets in gleicher Weise durchgeführt wird. Anwendungsfälle in der Unfallrekonstruktion sind z.B.:

  • Ändern von Größe + JPEG-Kompression von Fotos
  • Umwandeln von (auch geschützten) PDF-Seiten in JPEGs
  • Automatische Belichtungskorrekturen
  • Erstellen von Indexprints für Fotoverzeichnisse
  • Fotogrammetrische Entzerrung eines Fotos à la PC-Rect

Eine einfache DOS-Stapelverarbeitungsdatei zum »Kleinrechnen« aller Fotos in einem Verzeichnis sieht etwa folgendermaßen aus:

MD _klein
FOR %%v IN (*.JPG) DO ^
magick "%%v" -resize 928x928 -quality 80%% -density 150x150 "_klein\s_~nxv"

Weitere Anwendungsbeispiele zu ImageMagick finden sich in Hugemann: Unfallrekonstruktion im Kapitel "Bild- und Videobearbeitung". Auf der Website zum Buch finden registrierte Benutzer etliche Beispielskripte samt Erläuterungen.

Installation

Fertige Installationsdateien (auch) für Windows finden sich unter http://www.imagemagick.org/script/binary-releases.php. Dort gibt es eine Vielzahl unterschiedlicher Versionen, jedoch steht die jeweils empfohlene Installationsdatei stets ganz oben für sich allein. Derzeit (Ende 2019) nennt sie sich ImageMagick-7.0.9-11-Q16-x64-dll.exe:

  • 7.0.9-11 = Versionsnummer
  • Q16 = Farbtiefe 16 bit
  • x64 = 64-bit-Version
  • dll = die Hilfsbibliotheken (DLLs) werden zur Laufzeit eingebunden.

Der Standard-Installationspfad beinhaltet (wie bei vielen Unix-Programmen üblich) die Versionsnummer des Programms, lautet bei der oben zitierten Version also C:\Programme\ImageMagick-7.0.9-11. Man kann auf diese Weise mehrere Programmversionen parallel betreiben. Wenn man den Installationspfad stets auf C:\Programme\ImageMagick verkürzt, kann man anschließend aktuelle Versionen »drüber« installieren, ohne die Vorgängerversion vorab zu de-installieren.

Bei der Installation die PATH-Systemvariable anpassen lassen (danach wird gefragt), dann wird C:\Programme\ImageMagick als erster Eintrag in die Path-Variable geschrieben. Sollten die Skripte von Wolfgang Hugemann nach der Erstinstallation von ImageMagick nicht sofort laufen, den Rechner einmal neu starten.

Version 6 oder 7 ?

Die aktuelle Version 7 weicht deutlich von der Handhabung der 6er Version ab. Will man die Version 6 (wegen älterer, noch nicht entsprechend modifizierter Skripte) nutzen, so empfiehlt sich der Parallelbetrieb der Versionen 6 und 7, der problemlos möglich ist.

Das meistgenutzte Kommandozeilenprogramm aus der ImageMagick-Suite nannte sich bis zur Version 6.x.x.x convert.exe, offenbar weil es ursprüglich einmal dafür vorgesehen war, Grafikformate ineinander zu konvertieren. Mit der Einführung von NTFS als Dateisystem hat Microsoft denselben strategischen Fehler begangen und das Windows-Systemprogramm, das FAT-Laufwerke in NTFS umformatiert, ebenfalls schlicht convert.exe genannt. Dieses Programm liegt in einem Windows-Systemverzeichnis und wird, wenn irgendetwas mit den Pfadeinstellungen schiefläuft, als erstes gefunden und stattdesen ausgeführt. (Dies produziert auf neueren Rechnern, die ohnehin NTFS-formatiert sind, lediglich eine Fehlermeldung.)

Ab der ImageMagick Version 7 heißt convert.exe nun magick.exe, sodass keine Verwechselung mehr möglich ist.

Update-Strategie

Achtung: ImageMagick wird etwa monatlich aktualisiert - nicht immer zu jedermanns Vorteil. Es kann durchaus vorkommen, dass Skripte, die jahrelang problemlos liefen, mit einer frisch installierten ImageMagick-Version plötzlich nicht mehr laufen. Deshalb folgende Ratschläge:

  • Installieren Sie möglichst Versionen, die sich im Einsatz bewährt haben. Die können ruhig schon Jahre alt sein.
  • Installieren Sie nur dann eine neue Version, wenn diese Funktionalitäten mitbringt, die Sie tatsächlich zu nutzen beabsichtigen.
  • Behalten Sie stets ältere Versionen als Installationsdatei in der Hinterhand. Sie sind im Netz nur über Umwege zu bekommen.
  • Meiden Sie die Versionen 6.8.x.x. Dort hapert es mit der Konvertierung mehrseitiger PDF-Dokumente in JPEGs.

Skripte

Ältere Skripte von Wolfgang Hugemann verwenden die ImageMagick-Version 6 und laufen mit der aktuellen Version nicht ohne Anpassungen (die noch nicht getestet wurden). Auf der ImageMagick-Site http://www.imagemagick.org ist nur die aktuelle Version erhältlich. Die 6er Version gibt es z.B. auf https://sourceforge.net/projects/imagemagick/files/6.9.5-exes.

Aus historischen Gründen erwarten diese Skripte, dass convert.exe in IMconv.exe umbenannt wird. Dieser Schritt ist nach der Installation im Windows-Explorer manuell vorzunehmen, sofern man diese Skripte verwendet. Anschließend sicherheitshalber eine DOS-Box öffnen (Start > Ausführen > cmd) und IMconv eingeben; dann sollte ImageMagick einen Text zurückmelden.

Seit Ende 2019 schreibt Wolfgang Hugemann neuere Skripte (etwa begleitend zur Neuauflage des Buches »Unfallrekonstruktion«) ausschließlich für die Version 7.

Wie startet man die Bildbearbeitung durch ImageMagick?

Die Fotobearbeitung durch ImageMagick kann über folgende Mechanismen angestoßen werden:

  • aus IrfanView heraus, das den Start von bis zu 10 externen Programmen / Skripten ermöglicht und dabei den Namen der aktuell angezeigten Bilddatei übergibt
  • aus einem Excel-Makro heraus

Ein Anwendungsbeispiel

Das folgende Skript (Stapelverarbeitungsdatei, Batchdatei) rechnet ausgewählte oder sämtliche Fotos in einem Verzeichnis auf feste maximale Größe und feste JPEG-Qualität um. Beide Parameter werden zu Beginn des Skripts vorgegeben, hier mit 2.400 Pixeln (größere Abmessung) und 50%. Sind die Abmessungen des Fotos kleiner, so wird nur die JPEG-Qualität geändert. Die von der Kamera typischerweise eingebetteten Thumbnails werden gelöscht, um den Datenballast zu reduzieren. Die bearbeiteten Fotos werden in einem Unterverzeichnis festen Namens (Vorgabe: _klein) gespeichert.

Das Skript setzt voraus, dass dem Laufwerk ein Laufwerksbuchstabe zugeordnet ist (sonst Fehlermeldung). Das ImageMagick-Programm Convert.exe ist für das Skript in IMconv.exe umbenannt worden. Das muss aber nicht unbedingt sein. Das Programm jhead speichert man am besten im gleichen Verzeichnis wie ImageMagick.

Das Skript wird am besten zentral auf dem Server abgelegt, in einer Datei, die sich z.B. "Fotolein.bat", "Foto_klein.cmd" oder sonstwie nennt. (Hauptsache, die Endung lautet .bat oder .cmd.) Auf den Clients dann Verknüpfungen zu diesem Skript im SendTo-Ordner anlegen.

Wird nur eine Datei an das Skript geschickt, so werden alle Fotos im Verzeichnis kleingerechnet, ansonsten nur die ausgewählten.

::=============================================================
:: Fotos für den Messlattenserver aufbereiten
::  Benötigte Programme:
::    ImageMagick (www.imagemagick.org)
::    jhead (www.sentex.net/~mwandel/jhead)
::           zum Entfernen des Thumbnails
::
:: Version 1.0 von 2013-01-29:
::
:: (c) Wolfgang Hugemann, IB MuH
::=============================================================
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
:: Vorgaben
:: Name des IM-Hauptprogramms
SET IM=magick
:: JPEG-Qualitaet der kleingerechneten Fotos
SET quality=50
:: Groessere der beiden Abmessungen des kleingerechneten Fotos
SET size=2400
::
:: Name des Unterverzeichnisses, in dem die kleingerechnten Bilder gespeichert werden
SET dir=_klein
:: Ausgabeanweisung
:: Testen, ob ImageMagick instaliert ist
%IM% -version 2>nul
IF NOT %errorlevel%==0 GOTO NoMagick:

:: Netzwerklaufwerk ohne Laufwerksbuchstaben können nicht behandelt werden
IF (%~d1) == (\\) Goto Error:
:: Wechsel auf das aktuelle Laufwerk
%~d1
:: Wechsel in das Verzeichnis oder das Verzeichnis der Datei
IF EXIST %1\* ( CD %1 ) ELSE CD %~p1
:: Unterverzeichnis erstellen
MD %dir% 2>nul:
::
:: Wenn nur eine Datei uebergeben wurde => alle bearbeiten
IF '%2'=='' (
SET PATTERN=*.jpg
) ELSE (
SET PATTERN=%*
)

FOR %%v IN (%PATTERN%) DO (
ECHO %%~nxv
%IM% "%%~v" -resize %SIZE%x%SIZE%">" -quality %QUALITY% "%DIR%\%%~nxv"
jhead -dt "%DIR%\%%~nxv"
)
GOTO :EOF

:ERROR
ECHO Angegebener Pfadname:
ECHO %1
ECHO Bitte nur Netzwerklaufwerke benutzen, die auch
ECHO einen Laufwerksbuchstaben haben (z.B. W:).
PAUSE
GOTO :EOF

:NoMagick
ECHO ImageMagick (%IM%.exe) nicht gefunden.
ECHO Haben Sie vergessen convert.exe umzubenennen?
PAUSE

Weitere Infos