Grafikbearbeitung mit dem Kommandozeilenwerkzeug ImageMagick

In diesem Beitrag beschreibe ich, wie man mit dem Kommandozeilenwerkzeug ImageMagick die Grafiken einer alten PDF-Datei ansehnlicher gestaltet. Dabei kommen auch weitere Werkzeuge zum Einsatz, so z.B. ein Programm zu aufsplitten der PDF-Datei und auch Batch-Programme auf Kommandozeilenebene werden ausgiebig genutzt.

Zur Problemstellung - Die Aufgabe

Ich habe vor ein paar Tagen eine alte PDF-Datei gefunden, die ich wieder verwenden wollte. Es handelte sich um die gescannte Version eines Lehrbuches. Allerdings hatte diese Datei eine schlechte Qualität:

  • die Scans an sich waren schlecht
  • auf einer A4-Seite der PDF-Datei waren immer zwei Buchseiten zusammengefasst. Das schränkte die frei Wahlmöglichkeit beim Ausdrucken ein. Die Ausdrucke waren wegen der kleinen Schrift schlecht lesbar
  • die Datei war unverhältnismäßig groß

Da die einzelnen Scans nicht mehr vorhanden waren und das Buch selbst auch nicht, wollte ich

  1. die einzelnen Seiten der Datei in bearbeitbare Grafiken umwandeln
  2. die Doppelseiten auseinanderschneiden
  3. die Grafiken selbst verbessern

Das Ganze sollte angesichts des Umfangs von 132 A4-PDF-Seiten bzw. 264 Buchseiten möglichst effektiv vonstatten gehen.

PDF-Datei zerlegen

Der erste Schritt bestand darin, die PDF-Datei zu zerlegen. Meine Versuche mit diversen Online-Konvertern oder Libre Office (bzw. Open Office) schlugen jedoch fehl. Microsoft Office kann eigentlich ab Version 2013 PDF-Dateien öffnen, allerdings arbeite ich immer noch mit der sonst vollkommen ausreichenden Version von 2007, die kann aber nur PDF-Dateien erstellen/speichern.

Erfolg hatte ich schließlich mit dem Programm PDF-XChangeEditor. Konkret habe ich die Version 9.5 genommen. Bei diesem Programm sind zwar in der kostenlosen Version viele Funktionen gesperrt oder anderweitig unbrauchbar gemacht, so auch der Export nach Excel, Word und Powerpoint. Der Export in eine Bilddatei funktioniert jedoch.

PDF-XChangeEditor erstellt dann beispielsweise aus einer PDF-Datei mein-dokument.pdf mit 10 Seiten 10 fortlaufende Grafikdateien mit mein-dokument_01.png. Man kann neben PNG auch andere Grafikformate wählen, z.B. TIFF oder JPEG.

Grafiken zerschneiden

Im Grund wäre es kein Problem, die nun vorliegenden Grafiken mit einem beliebigen Grafikprogramm wie z.B. Paint.Net in jeweils zwei Hälften zu zerschneiden. Wie ich jedoch schon erwähnt habe gibt es jedoch ein Mengenproblem. Ich hatte einfach keine Lust, 312 Grafikdateien aufzurufen und dann jeweils zuerst die linke und dann die rechte Hälfte separat zu speichern.

Also habe ich mit die Möglichkeiten von ImageMagick angesehen.

Grafiken verbessern

Batch-Dateien nutzen

Angenommen, es befinden sich im Verzeichnis E:\Test\ eine große Anzahl von Dateien, von denen man Kopien erstellen will, wobei bei den Dateikopien jeweils der Zusatz -neu an den bisherigen Dateinamen angehängt werden soll, also soll z.B. 12345.jpg zu 12345-neu.jpg kopiert werden, dann kann man die in einem Durchgang mit dieser kleinen Batch-Datei erledigen:

:: Achtung, nicht 2x auführen sonst ensteht -neu-neu
for %%f in ("E:\Test\*.*") do copy %%f %%~dpnf-neu%%~xf

Doch Vorsicht:Wenn man die Datei zwei mal ausführt, dann wird wiederum der neue Text an den Dateinamen angefügt! Wenn man diesen Arbeitsschritt nicht mit Hilfe einer Batch-Datei, sondern direkt in der Console ausführen will, dann sieht der Code etwas anders aus:

for %f in ("E:\Test\*.*") do copy %f %~dpnf-neu%~xf

Aus den doppelten Prozentzeichen wird jeweils ein einfaches Prozentzeichen. Wenn beim Kopieren unter anderem Namen eine Datei entsteht, deren Name bereits vorhanden ist, dann erfolgt hier eine Abfrage, ob die bisherige Datei überschrieben werden soll.

Man könnte nun auf die Idee kommen, dieses Script bzw. diesen Einzeiler nicht zum Kopieren sondern zum umbenennen zu benutzen, in dem man an Stelle von copy der Befehl ren bzw. rename verwendet. Doch das geht so nicht, denn bei rename ist beim Ziel keine Angabe von Laufwerk und Pfad erlaubt, aber im obigen Programmcode stehen unter dpnf die Parameter d für das Laufwerk, p für den Verzeichnispfad zur Datei und n für den Namen. Wenn man die beiden erstgenannten entfernt, dann klappt es auch mit dem Umbenennen.

for %f in ("E:\Test\*.*") do ren %f %~nf-neu%~xf

Auch hier gilt: nicht zwei Mal ausführen!

Websites mit Beispielen zur Nutzung von ImageMagick

Bilder mit ImageMagick auf der Kommandozeile bearbeiten

Auf der Webseite https://blog.novatrend.ch/2019/02/11/bilder-mit-imagemagick-bearbeiten/ gibt es Erklärungen zu den folgenden Themen:

  • Bilder skalieren
  • Bilder beschneiden
  • Beschneiden und skalieren
  • Format umwandeln
  • Bilder drehen
  • Wasserzeichen einfügen

Kommentierte Liste der Kommandozeilenoptionen

Eine ausführliche Liste der Kommandozeilenoptionen gibt es hier http://www.imagemagick.org/script/command-line-options.php

ImageMagick - Ubuntu-Nutzer

Hier gibt es eine Vielzahl von Beispiele, die sich zwar in erster Linie an Linux/Ubuntu-Nutzer richten, die sich aber leicht unter anderen Betriebssystembedingung nachvollziehen lassen https://wiki.ubuntuusers.de/ImageMagick/

  • Bilder mit Wasserzeichen versehen 
  • Bilder / Fotos nachbearbeiten
  • Gescannte Dokumente nachbessern 
  • Bilder zusammenführen 
  • montage
  • Bilder zusammenführen
  • composite
  • PDF-Bearbeitung

Bilder mit ImageMagick bearbeiten 

Auf der Webseite https://netzmafia.ee.hm.edu/skripten/hardware/RasPi/Projekt-Monitor/imagemagick.html, die sich vor allem an Nutzer des Raspberry Pi richtet gibt es u.a. Tipps zu den folgenden Aspekten des Einsatzes von Imagemagick

  • Bilddaten ermitteln mit identify 
  • Bilder vergleichen mit compare 
  • Bilder bearbeiten mit convert
  • Bilder drehen und spiegeln 
  • Bilder skalieren und beschneiden 
  • Bilder einrahmen 
  • Schrift einsetzen 
  • Einsatz von Filtern 
  • Wasserzeichen mit composite einbauen 
  • Bilder kombinieren mit montage 
  • Mehrere Dateien oder Ordner konvertieren mit mogrify

Die Kommandozeilen-Programme von ImageMagick spielen ihre Vorteile natürlich vor allem dann aus, wenn es um die Bearbeitung einer Vielzahl von Dateien geht. In der Regel muss man immer erst einige Male einen Testlauf durchführen, bevor man zum gewünschten Ergebnis kommt. Das schließt ein, dass man nach einem Testlauf das Ergebnis visuell begutachtet.

Wenn es hingegen nur um die Bearbeitung eines Fotos oder die sehr individuelle Bearbeitung mehrerer Fotos geht, dann ist man in der Regel mit einem Programm wie Paint.Net besser bedient. Für Nutzer, die die Hilfe und Unterstützung gern in deutscher Sprache zur Verfügung haben gibt es für Paint.Net ein deutschsprachiges Forum und auch eine deutschsprachige Wikiseite für Paint.Net.