44 votes

Convertir un tas de fichiers BMP en JPEG sur Linux

Quelqu'un m'a envoyé une série de fichiers BMP et j'ai besoin d'eux en JPEG. Je pourrais les convertir un par un en utilisant GIMP, mais je préférerais le faire tout en une fois. J'ai Ubuntu.

63voto

cyotee doge Points 111

Vous pouvez utiliser l'outil mogrify d'ImageMagick

mogrify -format jpg \*.bmp

21voto

Mark Points 251

Vous avez probablement ImageMagick installé sur Ubuntu.
Cela peut faire,

convert nomdufichier.bmp nomdufichier.jpg

mise à jour:

Le mogrify (répondu par hyperslug et mentionné par cjm) est également une bonne option.

Utilisez le programme mogrify pour redimensionner une image, la flouter, la recadrer, la déspeckler, la ditheriser, dessiner dessus, la retourner, la joindre, rééchantillonner, et bien plus encore.
Cet outil est similaire à convert sauf que le fichier image original est écrasé
(à moins que vous ne changiez le suffixe du fichier avec l'option -format) avec toutes les modifications que vous demandez.

8voto

user166821 Points 11

Laissez-moi apporter une petite modification à la réponse de salmonmoose :

for i in `ls *.bmp`; do convert $i $i.jpg; done

La méthode ci-dessus fonctionne mais génère des fichiers nommés "bmp.jpg". Vous pouvez obtenir des fichiers .jpg avec cette commande :

for i in *.bmp; do convert ${i} ${i%bmp}jpg; done

Consultez man bash pour plus de détails sur la commande for. La partie ${i%bmp} signifie la chaîne "${i}" sans le sous-chaîne "bmp" à la fin.

Il existe d'autres opérations pour transformer la chaîne dans "${i}". "$i" est une abréviation pour "${i}". La partie ls *.bmp dans la réponse de salmonmoose signifie "exécute ls *.bmp, ensuite la partie for `i` assigne chaque chaîne séparée par des espaces à i". La même chose est obtenue par *.bmp car cela correspond à tous les noms de fichiers dans le répertoire.

Il y a un inconvénient avec for - si les fichiers de votre répertoire ont des espaces dans le nom, par exemple "photo de mariage 1.bmp", il sera assigné 3 fois à la variable i, exécutant ces commandes :

convert mariage mariage.jpg 
convert photo photo.jpg
convert 1.bmp  1.bmp.jpg

Dans ma réponse, la correspondance "${i%bmp}" échoue également.

Mais il y a une solution - vous pouvez utiliser la commande find à la place. Consultez man find pour plus de détails. Vous devriez taper quelque chose comme ce qui suit (veuillez vérifier la syntaxe avec la page de manuel avant d'essayer) :

find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;

(Je ne suis pas très sûr de la partie name, et j'ai quelques doutes sur la partie -exec, consultez d'abord man find)

Si vous souhaitez regrouper toutes les images dans un seul fichier .jpg, vous pouvez les concaténer avec un autre filtre, comme celui mentionné dans la première réponse.

1voto

Graeme Bradbury Points 2922
pour i in `ls *.bmp`; faire convertir $i $i.jpg; fin

Oui, cela créera une série de fichiers appelés nomdefichier.bmp.jpg mais cela fera le travail.

1voto

Eloy Pineda Points 1767

Convertir .bmp en .jpg en utilisant Linux :

for ii in *bmp;do base=`echo $ii|cut -d"." -f1`; convert $ii $base.jpg;done

Résultats :

foo2.bmp devient foo2.jpg

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X