web-dev-qa-db-fra.com

Comment convertir tous les fichiers (dans différents formats) dans un dossier donné en un type de fichier différent

J'ai un dossier avec de nombreuses images de différents types (png, jpg, jpeg, bmp, pdf), et je voudrais les convertir toutes en png (par exemple) en utilisant imagemagick.

Existe-t-il une seule commande qui peut effectuer cela? Sinon, que dois-je faire à la place?

Merci.

28
Tal Galili

Essayez la commande mogrify:

mogrify -format png *.*

Mais fais attention. Sans le -format option, mogrify écrase les images originales. Assurez-vous de lire la documentation .

39
nwellnhof

Bien que mogrify semble faire le travail, je voudrais vous montrer comment cela peut être fait avec plusieurs commandes avec convert d'ImageMagick.

Je pense que plusieurs commandes sont meilleures, car le nombre de types de fichiers est censé être assez petit et vous pouvez mieux l'adapter à vos besoins:

Cette commande:

for file in *.xbm; do convert $file "`basename $file .xbm`.png"; done

convertira tous les .xbm fichiers vers .png sans toucher aux fichiers xbm.

Ensuite, vous pouvez déplacer tous les fichiers "convertis":

mkdir converted
for file in *.xbm; do mv $file converted/; done
26
Martin Thoma

Vous pouvez utiliser la commande convert du package ImageMagick, par exemple.

find . -maxdepth 1 \( -iname \*.png -o -iname \*.jpg -o -iname \*.jpeg -o -iname \*.bmp -o -iname \*.pdf \) -exec convert -verbose "{}" "DEST_DIR/{}.png" \;

Ou si vous avez tous les fichiers dans le même répertoire, essayez la méthode plus simple suivante:

convert '*.*' converted_%04d.png

Similaire: Comment puis-je mettre à l'échelle toutes les images d'un dossier à la même largeur?

1
kenorb