
Ich habe eine Reihe von Bildern in einem Ordner:
images/image1.jpg
images/image2.jpg
...
Diese Bilder sind nicht für das Web optimiert.
Ich frage mich nur, ob es einen Linux-Befehl gibt, um diese Bilder in nur einem Schritt zu optimieren?
AKTUALISIEREN: Ich muss für jedes Bild zwei Dinge tun:
Wenn die Breite des Bildes größer als 900 Pixel ist, reduzieren Sie die Breite auf 900 Pixel (unter Beibehaltung der Proportionen).
Speichern Sie die Datei in geringerer Qualität, sagen wir 70 % des Originals.
Antwort1
InstallierenBildMagick:
sudo apt-get install imagemagick
Und verwenden Sie den convert
Befehl wie folgt:
mkdir new
for file in images/*jpg
do convert -quality 70% -resize '>900x' "$file" new/$(basename "$file")
done
Antwort2
Wenn Sie sehr viele Dateien haben und dies schnell erledigen möchten, können Sie auch das parallele Programm verwenden:
sudo apt install imagemagick parallel
Und dann folgendes:
find . \( -name '*.jp*g' -o -name '*.png' \) -a ! -name '*.min.*' -type f -print0 | \
parallel -0 'convert {} -resize '>900x' -quality '70%' \
-set filename:newname "%d/%[basename].min.%[extension]" "%[filename:newname]"'
Lassen Sie uns das durchgehen:
find
-- nach Dateien suchen.
-- im aktuellen Verzeichnis\( -name '*.jp*g' -o -name '*.png' \)
- die entweder PNG oder JPEG sind (sowohl „jpg“ als auch „jpeg“ sind gängige Erweiterungen!)-a ! -name '*.min.*'
-- und überspringen Sie Dateien, die bereits minimiert sind-type f
- und es handelt sich um tatsächliche Dateien, nicht um symbolische Links oder Verzeichnisse mit seltsamen Namen-print0
-- Drucken Sie diese Dateien durch das Null-Byte getrennt aus (damit Leerzeichen nichts zerstören)
parallel
-- Lesen Sie aus dem vorherigen Befehl und führen Sie diesen Befehl parallel für jedes Element aus-0
-- jedes Element ist durch das Null-Byte getrenntconvert {}
-- rufen Sie das ImageMagick-Programm "Konvertieren" auf und ersetzen Sie dabei den Dateinamen durch{}
resize '>900x' -quality '70%'
-- Ändern Sie die Bildgröße auf maximal 900 Pixel auf der X-Achse und ändern Sie die JPEG-Qualität auf 70 %.Es gibtvieleweitere mögliche Optionen hier.-set filename:newname "%d/%[basename].min.%[extension]"
-- Erstellen Sie eine Variable mit dem neuen Dateinamen.Alle gültigen Werte finden Sie in der Dokumentation..%d
-- das Verzeichnis, in dem sich die Datei befindet%[basename]
-- der Dateiname ohne Erweiterungen%[extension]
-- die ursprüngliche Dateierweiterung
"%[filename:newname]"
-- der Ausgabedateiname, den wir im vorherigen Schritt eingerichtet haben