Comment redimensionner par lot toutes les images d'un dossier (y compris les sous-dossiers)?


11

J'ai une énorme galerie de 12 Go sur le serveur, pleine d'images dans divers sous-dossiers. Ces fichiers sont trop volumineux et ne sont pas utilisés en pleine résolution. J'ai besoin de redimensionner toutes les images jusqu'à 820 pixels de large (en conservant les proportions). Donc, ma question est - comment puis-je créer une sorte de script d'exploration qui redimensionnerait toutes les images plus grandes que 820px et les sauverait en remplaçant le fichier d'origine?

J'espère que vous pourrez m'aider :-) Merci d'avance.


3
find . -name "*.jpg" -exec mogrify -resize 820x {} +les fera tous; si vous ne voulez pas traiter les "moins de 820px", il y a quelques options ici .
don_crissti du

Réponses:


13

Les outils ImageMagick convertissent ou mogrifient feront le travail.

Vous pouvez les obtenir via votre gestionnaire de paquets ou le source / rpms ici: http://www.imagemagick.org/script/binary-releases.php#unix

Utilisation de base:

$ mogrify -resize 820x *.jpg

Si vous avez besoin d'une récursivité:

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

Je ne pense pas que "820px de large (en conservant les proportions)" signifie "redimensionner à 820x820". Cela ressemble plutôt à «820 pixels de large et quelle que soit la proportion - élevée»;) De plus, cela ne gère pas la récursivité.
Erathiel

1
Bon point. Édité!

Si vous voulez faire en sorte qu'il ne redimensionne que si elles sont plus grandes que les dimensions définies et conservent toujours les ratios, vous pouvez le changer comme find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
suit

2
Attention: Cela écrasera vos images existantes.
sudo


5

Utilisez convertpour faire le travail.

convert -resize "1024x768>" origIMG destIMGredimensionnera origIMG à 1024x768 en conservant les proportions et en ne redimensionnant que si l'image est supérieure à 1024, en stockant la nouvelle image dans destIMG. Après cela, vous pouvez déplacer le destIMG vers l'original.

Utilisez une boucle pour parcourir tous vos répertoires ou utilisez find.


Comment modifieriez-vous cette commande pour écraser l'image originale par l'image réduite, tout en récurrent find?
Simon East
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.