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
undi_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
- Homepage von IrfanView
- Batch-Dateien und resize-Ordner (Datei downloaden und am Desktop entpacken. Danach .jpg-Dateien in den Ordner bilder_ori (Methode absolut) oder bilder (Methode relativ) kopieren.
- Word-Datei Verkleinern mit IrfanView
- Kommandos der Batch-Sprache von Windows
Franz war pensionierter HTL Lehrer (TGM), Präsident von ClubComputer, Herausgeber der Clubzeitung PCNEWS und betreute unser Clubtelefon und Internet Support. Er war leidenschaftlicher Rapid Wien Fan. Er ist leider Anfang Jänner 2024 nach langer schwerer Krankheit verstorben.
Verkleinern von Bildern mit (optionalen) Erhalt der Verzeichnisstruktur
Zweck: Übertragen vieler Bilder vom PC auf das Tablet
Ich verwende dazu XnView Multi Platform, da damit das Programm XnView (kostenlos) auch unter Linux (Ubuntu) verfügbar ist.
Einfachheit: sehr einfach, ausschließlich grafische Oberfläche ohne Hilfsprogramme oder Batch-Dateien.
Der einzig mögliche Nachteil ist, daß die Zielbreite und -höhe definiert wird, damit aber bei hochformatigen Bildern als Ergebnis deren längere Seite auf die Zielhöhe reduziert wird. Z.B. bei Seitenverhältnis 3:2 Reduktion auf B900 / H600 ergibt für ein Bild im Hochformat B400 / H600. Wenn man beim Herzeigen der Bilder am Tablet (Smartphone) das Gerät bei hochformatigen Bildern nicht dreht, entsteht dadurch kein Nachteil.
Die Batch Convert Funktion von XnView ist sehr mächtig und bietet darüber hinaus sehr viele andere Funktionen, selbst nutze ich diese nicht, wenn, dann editiere ich Bilder mit GIMP.
Auf Wunsch kann ich meine Einstellungen im Programm gerne weitergeben.
Hallo Herbert!
Danke für die Nachricht, das hilft unseren Usern sicher weiter.
Als Ergänzung möchte ich anbringen, dass DOS-basierte Batch-Programme für die meisten eher abschreckend sind aber für viele blinde User viel einfacher in dee Handhabung sind als eine grafische Oberfläche.
Servus, Franz