Converta todas as imagens não JPG em JPGs

4

Qual comando posso usar para converter todas as imagens em uma pasta que não sejam JPGs (principalmente PNG e BMP) para JPG? Eu também gostaria que a qualidade de conversão fosse 100%. E gostaria que as imagens convertidas substituíssem os originais.

    
por user8547 07.11.2014 / 21:55

2 respostas

3

Supondo que há apenas imagens nessa pasta, você pode

ls | grep -v jpg$

para obter todos os nomes de arquivos que não terminam com jpg , que suponho serem todas as imagens que você deseja converter. Então você pode usar a ferramenta convert de ImageMagick assim

ls | grep -v jpg$ | while IFS= read -r FILENAME
do
    convert "${FILENAME}" "${FILENAME%.*}.jpg"
done

O comando convert é expandido para convert <file name as printed by ls> <file name without extention>.jpg . A extensão jpg dirá convert para converter em formato jpg.

    
por 07.11.2014 / 22:10
2

Para converter todos os .png e .bmp no diretório atual e, em seguida, remova os arquivos originais:

mogrify -format jpg -quality 100 ./*.{png,bmp}
rm ./*.{png,bmp}

Para converter todos os arquivos, exceto .jpg , se seu shell for compatível com globalização estendida, por exemplo, bash :

shopt extglob
mogrify -format jpg -quality 100 ./*.!(jpg)
rm ./*.!(jpg)

ou zsh :

setopt extended_glob
mogrify -format jpg -quality 100 ./^*.jpg
rm ./^*.jpg

Recursivo:

find . -type f ! -name '*.jpg' -exec \
mogrify -format jpg -quality 100 {} + -exec rm {} +
    
por 21.05.2015 / 00:48