Verkleinern von Bildern gehört zu den Routineaufgaben der Bildbearbeitung. Wer viele Bilder im Internet publiziert, kennt diese Aufgabe. Nach jedem fotografischen Ereignis müssen alle Bilder auf ein vernünftiges Webmaß verkleinert werden, bevor man sie auf den Webserver uploaden kann. Das Problem hat viele Lösungen, und jeder hat sein Lieblingsprogramm, mit dem er diese Aufgabe erledigt.

Mein Favorit ist IrfanView. Viele von Euch werden das Programm IrfanView installiert haben. Es ist ein sehr universelles Grafikprogramm, bei dem es sehr viel zu entdecken gibt. Zum Beispiel verfügt IrfanView auch über einen Kommandozeilenmodus, indem es eine vorgegebene Aufgabe ausführt, ohne überhaupt die Windows-Oberfläche zu zeigen. Man benutzt also am PC eine Eingabeaufforderung und startet eine Batch-Datei, die den Verkleinerungsjob automatisch ausführt.

IrfanView

Wer IrfanView noch nicht installiert hat, kann das von einem Server der TU-Wien tun: Homepage von IrfanView

Zuerst müssen wir die Kommandozeilenoptionen von IrfanView kennen lernen. Die findet man so:

  • IrfanView starten
  • Help -> IrfanView Help -> Overview -> Command Line Options

Aber dort findet man gar nicht alle Optionen. Alle findet man in der Textdatei i_options.txt im IrfanView-Ordners. Bei mir ist das

C:\Program Files (x86)\IrfanView\i_options.txt

Du musst diese Optionen nur für den Fall studieren, wenn Du an den hier vorgestellten Batch-Dateien etwas ändern willst oder etwas anderes als nur eine Bildverkleinerung durchführen willst.

Genau so gut kann das IrfanView von unserer Micro-SD-Karte mit den Portablen Programmen verwendet werden:

Ich habe den Inhalt der SD-Karte auf meine S-Platte in einen Ordner PP kopiert. Von dort kann man die „PC-Magazin-Suite“ aufrufen. Sie installiert sich in der Taskleiste und man wählt dort aus: Foto und Grafik -> Bildbetrachter -> IrfanView. Der direkte Pfad ist S:\PP\PC-Mag-Suite2011-DVD\Apps\IrfanView.

Absolute Pfade

Die Versuchsanordnung ist folgende: Am Desktop gibt es einen Ordner resize. In dem Ordner ist die Batch-Datei i_resizeA0.bat sowie die zwei Ordner bilder und bilder_ori. Das Batch-Kommando verkleiner alle Bilder aus bilder_ori und speichert sie im Ordner bilder. Das ist alles. Der Name i_resizeA0 ist so zu verstehen. Das vorangestellte i_ meint, dass es sich um eine Verkleinerung mit IrfanView handelt (es gibt auch andere Möglichkeiten). Das nachgestellte A meint, dass es sich um absolute Pfade handelt, die nachgestellte 0 meint, dass es noch weitere Versionen geben wird.  Die gewählte Anordnung hat den Vorteil, dass alles, was zum Verkleinern gehört, sich an einem Ort befindet und dort in einem einzigen Ordner.

S:\desktop
  + resize
    i_resizeA0.bat
    i_resizeA1.bat
    + bilder
      bild1.jpg (verkleinert)
      bild2.jpg (verkleinert)
      ...
    + bilder_ori
      bild1.jpg (Original)
      bild2.jpg (Original)
      ...

Aufgerufen wird die Verkleinerung mit

S:\desktop\i_resizeA0.bat

oder mit einem Doppelklick auf  i_resizeA0.bat im Windows-Explorer.

i_resizeA0.bat schaut so aus:

"C:\Program Files (x86)\IrfanView\i_view32.exe" s:\desktop\resize\bilder_ori\*.jpg /resize_long=2048 /aspectratio /resample /convert=s:\desktop\resize\bilder\*.jpg

Der Aufruf von IrfanView muss unter Anführungszeichen gestellt werden, weil er Blanks enthält. Die Verkleinerung wurde so eingestellt, dass die längere Seite des Bildes 2048 Pixel sein soll. Alle diese Batch-Dateien sind in einem downloadbaren Zip-Archiv am Ende des Artikel zu finden.

Eigentlich sind wie an dieser Stelle fertig. Um Bilder zu verkleinern, kopiert man die Bilder in den Ordner bilder_ori, klickt auf die .bat-Datei i_resizeA0.bat oder ruft sie über eine Eingabeaufforderung auf und findet die verkleinerten Bilder im Ordner bilder.

Routinierte Benutzer von .bat-Dateien sehen, dass man mit einigen zusätzlichen Maßnahmen mehr Übersicht und mehr Flexibilität ins Spiel bringen kann.

IrfanView im Pfad

Da ist zunächst der Aufruf von IrfanView über einen absoluten Pfad. Wenn man zukünftig mehr mit der Kommandozeilenversion von IrfanView arbeiten möchte, empfiehlt es sich, den Ordner von IrfanView in der Umgebungsvariablen PATH aufzunehmen, denn dann entfällt die lästige Angabe des vollständigen Pfads und das Programm wird auch dann gefunden, wenn nur i_view32 allein eingegeben wird. Die Aufnahme des IrfanView-Ordners im Pfad funktioniert so:

  • Windows-X -> System -> Erweiterte Systemeinstellungen -> Umgebungsvariablen -> Systemvariablen
  • Zeile „Path“ markieren und auf „Bearbeiten…“ klicken.
  • Neu -> Eingabe C:\Program Files (x86)\IrfanView -> OK
  • Fenster schließen

Damit genügt der Aufruf von i_view32 allein.

Wenn man die Batch-Datei an die eigene Anordnung anpassen möchte, muss man die Pfade innerhalb des Kommandos editieren. Das kann aber zu Fehlern führen. Es ist daher besser, Quell- und Zielordner in eigenen Variablen zu definieren.

Weiters ist es einschränkend, dass die Verkleinerung fest eingestellt ist. Wünschenswert wäre, dass man durch Angabe eines Parameters die Verkleinerung beliebig wählen kann.

Mit diesen Behübschungen schaut unsere .bat-Datei so aus und heißt jetzt i_resizeA1.bat:

@ECHO OFF
CLS 
SET SRC=s:\desktop\resize\bilder_ori\*.jpg
SET DST=s:\desktop\resize\bilder\*.jpg
@ECHO Verkleinern der Bilder in %SRC%
SET LONGSIDE=2048
IF %1.==. GOTO CONVERT
SET LONGSIDE=%1
:CONVERT
i_view32 %SRC% /resize_long=%LONGSIDE% /aspectratio /resample /convert=%DST%
@ECHO Fertig mit dem Verkleinern
PAUSE
@ECHO ON

Wenn man den Pfad DST auf denselben Wert einstellt wie SRC, dann braucht man auch nur einen Ordner und die Originale werden überschrieben.

Was ist der Nachteil dieser Anordnung?

Bevor man Bilder verkleinert, muss man sie in einem getrennten Verfahren von der SD-Karte aus der Kamera in den Originalordner kopieren und nach der Verkleinerung mit der Batch-Datei muss man die Bilder wieder dorthin kopieren, wo sie eigentlich hingehören, also in ein hierarchisches Archiv. Es wäre wünschenswert, alles das in einem einzigen Schritt erledigen zu können.

Relative Pfade

Dazu müssen wir vorerst eine Entscheidung über den Speicherort von Original und Verkleinerung treffen.

Google Picasa macht das so: Es gibt nur ein Bildarchiv, jenes der Originalbilder. Und solange die Bilder nicht bearbeitet werden, bleiben die Bilder auch in dieser Form bestehen. Wenn man nun in Picasa eine Bearbeitung vornimmt – und das wäre in unserem Fall eben eine Verkleinerung – dann macht Picasa folgendes: Picasa legt in dem Ordner, in dem sich die Originale befinden, einen Ordner mit dem Namen .picasaoriginals an und verschiebt die Originale dort hinein. Dann wird das Bild bearbeitet – in unserem Fall verkleinert – und die Verkleinerungen nehmen den Platz der ursprünglichen Originale ein. Sollte man sich bei der Bearbeitung geirrt haben, kann man jederzeit die Originale wiederherstellen. Diese Arbeitstechnik hat den Vorteil, dass es nur ein Bilderverzeichnis gibt. Die Originale werden nicht angetastet und bleiben im Ordner .picasaoriginals. Gearbeitet wird nur mit den Bearbeitungen. Der Nachteil ist, dass man bei einem Upload der Verkleinerungen auf einen Server darauf achten muss, dass man nicht versehentlich den Ordner .picasaoriginals mitkopiert, denn genau das, den Upload riesiger Originaldateien auf den Server wollte man ja vermeiden.

Eine zweite Möglichkeit ist die, dass man die Verkleinerungen mit einem Präfix oder mit einem Suffix versieht und in demselben Ordner speichert, in dem sich auch die Originale befinden. Diese Variante wird vom Programm GalleryServerPro benutzt, scheint aber für unsere Anwendung nicht so gut geeignet zu sein, weil dadurch der Bildername der upzuloadenden Bilder verändert wird. Und da die Bildernamen auch gleichzeitig beschreibend sein sollen, störten die vor- oder nachgestellte Zeichen.

Eine weitere Möglichkeit wäre, das Bildarchiv in zwei getrennten Verzeichnisbäumen zu führen; einem Verzeichnisbaum der Originale und  einen Verzeichnisbaum der Verkleinerungen. Diese Möglichkeit wird hier nicht weiter verfolgt.

Die im folgenden benutzte Methode ist die von Picasa mit dem gesonderten Verzeichnis für Originale. Den Ordner für die Originale nennen wir .ori. Damit verändert sich unsere Versuchsanordnung. Der Unterschied  zum vorigen Beispiel ist, dass der Ordner für Originale nicht parallel zum Bilderordner ist sondern untergeordnet.

S:\desktop
  + resize
    i_resizeA0.bat
    i_resiteA1.bat
    i_resizeR.bat
    + bilder
      bild1.jpg (verkleinert)
      bild2.jpg (verkleinert)
      ...
      + .ori
        bild1.jpg (Original)
        bild2.jpg (Original)
        ...

Im ersten Schritt kopiert man die Bilder in den Ordner Bilder (der später irgendwo auf dem PC sein kann). der Ordner .ori existiert anfangs noch gar nicht, er wird durch das Batch-Programm angelegt und die Bilder werden aus dem Ordner Bilder in den Ordner Bilder\.ori verschoben und erst dann werden die Verkleinerung in den Ordner Bilder geschrieben.

Die angewendete Logik ist wie folgt:

  • Existiert der Ordner .ori bereits, dann nimmt das Batch-Programm an, dass sich dort die Originale befinden und führt die Verkleinerung bezüglich dieser Dateien aus.
  • Existiert der Ordner .ori aber nicht, dann verschiebt das Batch-Programm die Bilder dorthin und führt dann die Verkleinerung aus.

Die oben abgebildeten Batch-Dateien und der Ordner "Bilder" sind auf der ZIP-Datei enthalten, die weiter hinten zum Download bereit ist.

CLS
@ECHO OFF
SET ORI=.ori
SET LONGSIDE=2048
@ECHO Verkleinern der Bilder im Verzeichnis "%CD%\%ORI%"
IF NOT EXIST "%CD%\%ORI%\NUL" GOTO NOORI
ECHO Verzeichnis "%CD%\%ORI%" existiert 
GOTO STARTRESIZE
:NOORI
ECHO Verzeichnis "%CD%\%ORI%" existiert nicht und wird angelegt
MD .ori
ECHO Alle Bilder werden in "%CD%\%ORI%" verschoben
MOVE *.jpg "%CD%\%ORI%"
:STARTRESIZE
IF %1.==. GOTO RESIZE
SET LONGSIDE=%1
:RESIZE
SET SRC=%CD%\%ORI%\*.jpg
SET DST=%CD%\*.jpg
ECHO Verkleinere %SRC% nach %DST%
ECHO Laengere Seite ist %LONGSIDE% Pixel
i_view32 "%SRC%" /resize_long=%LONGSIDE% /aspectratio /resample "/convert=%DST%"
:ENDE0
@ECHO ON
@ECHO Fertig mit dem Verkleinern

Diese Batch-Datei bekommt den Namen i_resizeR.bat und befindet sich vorläufig im Ordner S:\desktop\resize. Das R steht für „relativ“, weil man diese Batchdatei für jeden beliebigen Pfad anwenden kann. Damit das aber PC-weit funktioniert, müssen wir diese Batchdatei in einen Ordner kopieren, der in der Umgebungsvariablen PATH enthalten ist, dann führt sie ihre Arbeit überall aus, wo man das aktuelle Verzeichnis auch immer hat, weil die Pfade nun nicht mehr absolut sind sondern relativ.

Schritt-für-Schritt-Anleitung

Vorbereitung (nur erstmals erforderlich)

  • Installieren von IrfanView
  • Aufnehmen des IrfanView-Ordners im Pfad (Anleitung siehe weiter oben)
  • Kopieren der Batch-Dateien i_resizeR.bat und i_resizeRR.bat in ein Pfadverzeichnis (bei mir heißt dieses Verzeichnis, das ausführbare Dateien enthält, C:\_bin). Der vorangestellte Unterstrich hat die Wirkung, dass dieses Verzeichnis ganz oben im Verzeichnisbaum angezeigt wird und nicht irgendwo in der Mitte.

Einfügen und Verkleinerung von Bildern in einem beliebigen Ordner am PC

  • Anlegen eines Bilderordners irgendwo im Verzeichnisbaum
  • Kopieren der Originalbilder von der SD-Karte in diesen Bilderordner
  • Öffnen des Ordners, der den Bilderordner enthält, im Windows-Explorer
  • Markieren des Bilderordners
  • Öffnen des Kontext-Menüs (Rechte Maustaste oder Taste „Kontext-Menü“) bei gedrückter Shift-Taste
  • -> Auswählen von „Eingabeaufforderung hier öffnen“ (öffnet eine Eingabeaufforderung und setzt den Pfad auf den Bilderordner)
  • Aufruf von i_resizeR mit oder ohne Pixelgröße als Argument

Links

Zur Werkzeugleiste springen