Wie kann ich die Größe aller Bilder in einem Ordner (einschließlich Unterordnern) stapelweise ändern?

11

Ich habe eine riesige Galerie mit 12 GB auf dem Server, voller Bilder in verschiedenen Unterordnern. Diese Dateien sind zu groß und werden nicht in voller Auflösung verwendet. Ich muss die Größe aller Bilder auf 820 Pixel ändern (Proportionen beibehalten). Meine Frage ist also: Wie kann ich eine Art Crawling-Skript erstellen, das die Größe aller Bilder mit einer Größe von mehr als 820 Pixel ändert und sie beim Überschreiben der Originaldatei wieder speichert?

Hoffe du kannst mir helfen :-) Danke im Voraus.

G-Gore
quelle
3
find . -name "*.jpg" -exec mogrify -resize 820x {} +wird sie alle tun; wenn Sie nicht wollen , die „weniger als 820px“ diejenigen zu verarbeiten, gibt es einige Möglichkeiten hier .
don_crissti

Antworten:

13

ImageMagick-Tools, die konvertieren oder mogrifizieren, erledigen den Job.

Sie können sie über Ihren Paketmanager oder die Quelle / RPMs hier herunterladen: http://www.imagemagick.org/script/binary-releases.php#unix

Grundlegende Verwendung:

$ mogrify -resize 820x *.jpg

Wenn Sie eine Rekursion benötigen:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;

quelle
Ich denke nicht, dass "820px breit (Proportionen beibehalten)" "Größenänderung auf 820x820" bedeutet. Es ist eher wie "820px breit und was auch immer der Anteil hoch ist";) Außerdem behandelt dies nicht die Rekursivität.
Erathiel
1
Guter Punkt. Bearbeitet!
Wenn Sie es so gestalten möchten, dass die Größe nur geändert wird, wenn sie größer als die festgelegten Abmessungen sind und die Verhältnisse find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
beibehalten werden
2
Achtung: Dadurch werden Ihre vorhandenen Bilder überschrieben.
Sudo
Verwandte: Wie steuere ich die Komprimierungsrate von mogrify? (Super User)
März 2377
5

Verwenden Sie convert, um die Arbeit zu erledigen.

convert -resize "1024x768>" origIMG destIMGDie Größe von origIMG wird auf 1024 x 768 geändert, wobei das Seitenverhältnis beibehalten und die Größe nur geändert wird, wenn das Bild größer als 1024 ist, wodurch das neue Bild in destIMG gespeichert wird. Danach können Sie das destIMG auf das Original verschieben.

Verwenden Sie eine Schleife, um alle Ihre Verzeichnisse zu durchlaufen oder zu verwenden find.

YoMismo
quelle
Wie würden Sie diesen Befehl ändern, um das Originalbild mit dem verkleinerten zu überschreiben, während Sie mit rekursiv arbeiten find?
Simon East