Ändere die Größe einer Liste von Bildern im Zeilenbefehl

7

Ich möchte die Größe einer Liste von Bildern ändern, alle im Verzeichnis. Um das zu erreichen, verwende ich convert von imagemagick. Ich möchte die Größe ändern

%Vor%

in

%Vor%

Ich habe mich gefragt, ob es eine Methode gibt, dies in einer einzigen Befehlszeile zu erreichen. Eine elegante Lösung könnte oft nützlich sein, nicht nur in diesem Fall.

BEARBEITEN:

Ich möchte eine nicht script-ähnliche Lösung, dh. ohne for-Schleife.

    
Jérôme 18.02.2009, 16:44
quelle

4 Antworten

6
%Vor%

Sie können die sed-Datei entfernen und generisch sein, wenn Sie einen geringfügig anderen endgültigen Dateinamen akzeptieren möchten, 'resized-image1.jpg' anstelle von 'image1-resized.jpg':

%Vor%     
chaos 18.02.2009, 17:06
quelle
10

Wenn Sie die Größe auf 800x600 ändern möchten:

%Vor%

(funktioniert in bash)

    
Johannes Weiß 18.02.2009 16:51
quelle
4

GNU Parallel ist noch einfacher als für Schleifen und ist oft schneller:

%Vor%

Hier ein paar Dinge, von rechts nach links:

  • ::: *.jpg bedeutet, dass der Befehl für jede jpg-Datei
  • ausgeführt wird
  • {.} bedeutet, dass der aktuelle Dateiname ohne das Suffix (% ​​co_de%)
  • eingefügt wird
  • .jpg bedeutet, dass der aktuelle Dateiname
  • eingefügt wird
  • {} bedeutet, dass Sie den folgenden Befehl mehrmals parallel ausführen. Es wählt das Maximum parallel aus, um die Anzahl der Kerne Ihres Computers zu erreichen. Wenn alle fertig sind, wird der nächste gestartet, bis alle jpg-Dateien konvertiert sind.

Dies führt den Befehl parallel für jede Datei aus. Das convert --resize 800x600 -- foo.jpg foo-resized.jpg weist convert an, Verarbeitungsflags zu stoppen, falls ein Dateiname mit einem -- beginnt.

P.S. Auf meinem Mac habe ich Homebrew installiert, also konnte ich parallel installieren und mit

konvertieren %Vor%     
DaveMan 22.05.2015 15:27
quelle
2

Wenn Ihre Bilddateien verschiedene Erweiterungen haben:

%Vor%     
Nietzche-jou 18.02.2009 17:04
quelle

Tags und Links