ImageMagick em vários arquivos

8

Eu converti um único arquivo de BMP para PNG com convert do ImageMagick usando o comando abaixo

convert CD\ Front.bmp CD\ Front.png

Eu tenho muitos desses arquivos, então eu tentei:

for f in */*.bmp ; do convert $f ${f%bmp}png; done

mas este comando fica suspenso para sempre.

O que estou fazendo de errado?

    
por user54619 15.12.2013 / 11:22

3 respostas

12

Você provavelmente tem um problema porque não citou os nomes dos arquivos:

for f in */*.bmp ; do convert "$f" "${f%bmp}png" ; done
#                             ^  ^ ^           ^

faça isso para que o espaço nos nomes dos arquivos não cause problemas.

    
por 15.12.2013 / 11:24
18

Você pode usar o mogrify:

mogrify -format png *.bmp

Fonte: Site do Imagemagick

    
por 15.12.2013 / 11:50
1

Eu refatoraria o código assim. Acho que esse método é mais claro & mais fácil de depurar:

find . -type f -name '*.bmp' |\
  while read BMP
  do
    DIR=$(dirname "$BMP")
    PNG="$(echo $BMP | sed 's/.bmp//g')"
    convert "${BMP}" "${PNG}".png
  done
    
por 15.12.2013 / 17:47