Wie wandelt man progressive JPG in baseline JPG um?

Es soll Geräte geben, die können keine progressiven JPGs anzeigen.

Aber was ist überhaupt der Unterschied zwischen progressiven und baseline JPGs?
Einfach ausgedrückt bauen sich baseline JPGs zeilenweise von oben nach unten auf. Progressive JPGs stehen dagegen sofort in voller Grösse da, jedoch sehr unscharf und verpixelt. Das progressive Bild wird nach und nach feinkörniger und schärfer dargestellt.
Beispielbilder und detailliertere Erklärungen findet man z.B. hier.

Wie erkennt man, ob ein JPG «progressive» ist?
Zum Beispiel, indem man es in IrfanView lädt. Dort drückt man die Taste i
(oder klickt mit der Maus auf das blaue “i” in der Symbolleiste) und kontrolliert dann in der vierten Eigenschaft Komprimierung: ob «progressive» angezeigt wird.

Progressive JPG, Info aus IrfanView

Wie wandelt man das «progressive» JPG in ein «baseline» JPG um?
Ein einzelnes progressives JPG kann man in IrfanView mit Ctrl + S oder
Datei -> Speichern neu abspeichern.
Dabei wählt man die erscheinende Option “Als Progressives-JPG speichern” AB:

IrfanView Option “Als Progressives-JPG speichern” DEAKTIVIEREN
damit baseline JPG gespeichert wird

Wie wandle ich progressive JPGs massenhaft in baseline JPGs um?
Die Batch-Umwandlung ist in IrfanView ebenfalls möglich, aber einigermassen umständlich. Einfacher geht es mit dem Kommandozeilen-Tool mogrify aus der Bildbearbeitungs-Sammlung von ImageMagick:

mogrify -interlace none *.jpg

Obigen Befehl tippt man in einem CMD-Befehlszeilenfenster ein und wandelt damit sämtliche gefundenen *.jpg im aktuell geöffneten Verzeichnis in baseline Varianten um. ACHTUNG: Die Original-JPG-Bilder werden dabei am gleichen Ort mit den gleichen Namen überschrieben, sind also nach der Umwandlung nur noch als neue baseline Variante vorhanden!

Wer diesen Vorgang über mehrere verschachtelte Unterverzeichnisse durchführen will, der packt den obigen Befehl in einen FOR-Loop und tippt auf der CMD-Zeile:

FOR /R %f in (*.jpg) DO mogrify -interlace none "%f"

Benötigt man diesen Befehl öfter, dann schreibt man diese Zeile in eine Batch-Textdatei:

FOR /R %%f in (*.jpg) DO mogrify -interlace none "%%f"

und speichert diese Textdatei z.B. als «WandleProgressiveJPGinBaselineJPG.cmd» ab. Damit braucht man nur noch diese *.cmd-Datei in das Hauptverzeichnis der umzuwandelnden Bilder zu kopieren und per Doppelklick werden alle gefundenen progressiven JPG in baseline JPG umgewandelt. (Achtung: Nochmal der Hinweis, dass damit alle Original JPG überschrieben werden).

Wenn man seine Original JPG-Dateien in progressiver Variante behalten will, kopiert man sie am einfachsten zuerst in ein neues Verzeichnis und führt die Umwandlung nur im neuen Verzeichnis durch.

Theoretisch kann man dem Befehl mogrify mit der Option -path auch einen Zielpfad angeben wo die umgewandelten JPG neu hingespeichert werden sollen (statt die Original JPG zu überschrieben). Der Befehl dafür lautet:

FOR /R %f in (*.jpg) DO mogrify -interlace none -path ./ExistingOutputPath "%f"

Entscheidend ist dabei, dass der angegebene /ExistingOutputPath tatsächlich schon vor dem Umwandeln existieren muss – er wird nicht automatisch erstellt!
“Theoretisch” funktioniert das nur deshalb, weil zwar sämtliche JPG aus allen Unterverzeichnissen umgewandelt werden, gespeichert werden sie aber dank der -path Angabe alle in diesem einzigen Zielpfad, egal wie tief verschachtelt das Original JPG ursprünglich lag. Es werden wie gesagt keinerlei Zielpfade durch mogrify selber erstellt.

Für diejenigen, die eine solche Lösung auf einem USB-Stick “portabel” mitnehmen möchten:
Für die Umwandlung braucht es aus der ImageMagick-Sammlung mindestens diese beiden Dateien im gleichen Verzeichnis:
1.) mogrify.exe
2.) magic.xml

Rate this post

Schreibe einen Kommentar