Quelqu'un m'a envoyé un tas de fichiers BMP et j'en ai besoin au format JPEG. Je pourrais les convertir un à un en utilisant GIMP, mais je préférerais tout faire en une fois. J'ai Ubuntu.
Vous pouvez utiliser l'outil mogrify d'ImageMagick
mogrify -format jpg * .bmp
Vous êtes susceptible d'avoir ImageMagick installé sur Ubuntu.
Cela peut faire ,
convert filename.bmp filename.jpg
mettre à jour:
Le mogrify
(répondu par hyperslug
et référencé par cjm
) est également une bonne option.
Utilisez le programme mogrify pour redimensionner une image, rendre un flou, un rognage, un flou, un tramage, un tracé, un retournement, une jointure, un nouvel échantillonnage, etc.
Cet outil est similaire à convertir sauf que le fichier image d'origine est écrasé.
(sauf si vous modifiez le suffixe du fichier avec l'option-format
) avec les modifications que vous demandez.
Permettez-moi de changer un peu la réponse de salmonmoose:
for i in `ls *.bmp`; do convert $i $i.jpg; done
Ce qui précède 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
Voir man bash
pour plus de détails sur la commande for
. La partie ${i%bmp}
signifie la chaîne "$ {i}" sans la sous-chaîne "bmp" à la fin.
Il existe d'autres opérations pour transformer la chaîne dans "$ {i}". "$ i" est un raccourci pour "$ {i}". La partie ls *.bmp
dans salmonmoose answer signifie "exécutez ls *.bmp
, puis la partie for i
affecte chaque chaîne séparée par des espaces à i
". La même chose est obtenue par *.bmp
car il correspond à tous les noms de fichiers du 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 "wedding picture 1.bmp", il sera attribué 3 fois à la i
var en effectuant les commandes suivantes:
convert wedding wedding.jpg
convert picture picture.jpg
convert 1.bmp 1.bmp.jpg
Dans ma réponse, la correspondance "$ {i% bmp}" échoue également.
Mais il existe une solution: vous pouvez utiliser la commande find
à la place. Voir man find
pour plus de détails. Vous devriez taper quelque chose comme ceci (veuillez vérifier la syntaxe avec la page de manuel avant de l'essayer):
find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;
(Je ne suis pas très sûr de la partie nom et j'ai un doute dans la partie -exec
, voir man find
en premier)
Si vous souhaitez joindre toutes les images dans un fichier .jpg, vous pouvez les concaténer avec un autre filtre, comme celui mentionné dans la première réponse.
for i in `ls *.bmp`; do convert $i $i.jpg; done
Oui, cela créera un tas de fichiers appelés filename.bmp.jpg mais cela fera l'affaire.
Vous pouvez y parvenir à l'aide d'ImageMagick. Dans ce lien sont des exemples