Sonntag, 21. August 2011
Bildformat umwandeln
Wenn man ein Bild in ein anderes Format wandeln will, also z.B. von .png in .jpg, kann man sich mit der Kommandozeile quälen -> ImageMagick#convert oder ein Bildbearbeitungsprogramm wie gimp benutzen.
Wenn man aber viele Bilder von einem Format in ein anderes wandeln will, sollte man lernen mit der Befehlszeile umzugehen, damit der harmlos aussehende Befehl convert seine Fähigkeiten gegenüber jedem großen Grafikprogramm ausspielen kann. Convert gehört zum Paket imagemagick. Ich hab heute lange gesucht und rumprobiert, weil viele Anleitungen im Internet leider nicht wirklich funktionieren aber eine gute Grundlage waren. Und auch das wiki in Ubuntuusers läßt einen diesmal allein.
Um ein Bild von .png in .jpg zu wandeln würde man eingeben:
convert bild.png bild.jpg
Aber wie kann man alle Dateien in einem Verzeichnis bearbeiten? Ich hab es mit einem
convert *.png *.jpg
probiert. Das klappt sogar zum Teil, macht mir aber die Ziel-Dateinamen kaputt. Das * wird im Zieldateinamen leider nicht als Platzhalter erkannt, sondern in den Dateinamen eingebaut. Wenn man viele Dateien hat, entstehen neuen Dateien mit den Namen *1.jpg *2.jpg etc... Also: So einfach geht das leider nicht.
Hier nun meine Beispiele: Um alle .png-Dateien eines Ordners in .jpg-Dateien umzuwandeln, wechselt man auf der Befehlszeile mit cd in den entsprechenden Ordner und gibt dann die folgende Zeile ein:
for i in *.png; do convert "$i" "${i%png}jpg"; done
Für die Konvertierung von .tif bzw. .bmp in .jpg lautet die Zeile entsprechend:
for i in *.tif; do convert "$i" "${i%tif}jpg"; done
for i in *.bmp; do convert "$i" "${i%bmp}jpg"; done
Zur Erklärung:
Hier wird eine Zählschleife im aktuellen Ordner gestartet, die in die Variable i nacheinander alle Dateien mit der Erweiterung bmp lädt.
Die Original-Dateien werden nicht gelöscht oder überschrieben. Die Zieldateien werden im Format .jpg erstellt. Die Grafik-Datei mit dem Namen "$i" wird konvertiert in eine Datei mit dem Namen "${i%bmp}jpg", es wird also mit %bmp das bmp aus dem Dateinamen i entfernt und durch ein jpg ersetzt. Die " " sind notwendig, um auch Dateinamen mit Leerzeichen bearbeiten zu können. Ansonsten würde das Programm convert nach jedem Leerzeichen eine neue Option vermuten und Fehler melden. Das Format der Bilddateien erkennt convert automatisch an den Datei-Erweiterungen.
Schneller und einfacher geht's wohl nicht. Viel Spaß! :-)
Wer eine einfachere Lösung kennt, möge bitte kommentieren!
Nachtrag 22.08.11
Ich hab noch eine sehr schöne Beschreibung zu dem Thema gefunden: Shellprogrammierung#for. Und hier kann man sehen, daß das ; als Befehls-Trennzeichen wirkt.
$ echo {0..5}
0 1 2 3 4 5
$ for i in {0..5}; do echo $i; done
0
1
2
3
4
5
Labels:
Bildbearbeitung,
Linux
Abonnieren
Kommentare zum Post (Atom)
Keine Kommentare:
Kommentar veröffentlichen
Dein Kommentar wird nicht sofort veröffentlicht, sondern muß zunächst von mir freigeschaltet werden. In der Regel gelingt mir die Freischaltung innerhalb von 24 Stunden. Wenn Du in Deinem Kommentar Fehler findest, schicke einfach einen weiteren korrigierten hinterher und ich lösche den ersten.