Respostas:
Você pode usar a ferramenta mogrify do ImageMagick
formato mogrify jpg * .bmp
sudo apt install imagemagickno Ubuntu e você pode definir a qualidade adicionando-quality 100
É provável que você tenha o ImageMagick instalado no Ubuntu.
Isso pode fazer ,
convert filename.bmp filename.jpg
atualizar:
O mogrify(respondido por hypersluge referido por cjm) também é uma boa opção.
Use o programa mogrify para redimensionar uma imagem, desfocar, cortar, remover manchas, pontilhar, desenhar, inverter, juntar-se, obter novamente amostras e muito mais.
Essa ferramenta é semelhante à conversão, exceto que o arquivo de imagem original é substituído
(a menos que você altere o sufixo do arquivo com a-formatopção) com as alterações solicitadas.
Deixe-me fazer uma pequena alteração na resposta salmonmoose:
for i in `ls *.bmp`; do convert $i $i.jpg; done
O acima funciona, mas gera arquivos chamados "bmp.jpg". Você pode obter arquivos .jpg com este comando:
for i in *.bmp; do convert ${i} ${i%bmp}jpg; done
Veja man bashpara detalhes do forcomando. A ${i%bmp}parte significa a sequência "$ {i}" sem a substring "bmp" no final.
Existem outras operações para transformar a string em "$ {i}". "$ i" é uma abreviação de "$ {i}". A ls *.bmpparte da resposta salmonmoose significa "executar ls *.bmp, então a iparte for atribui cada sequência separada por espaços a i". O mesmo é alcançado *.bmpporque corresponde a todos os nomes de arquivos no diretório
Existe uma desvantagem com for- se os arquivos em seu diretório tiverem espaços no nome, por exemplo "wedding picture 1.bmp", ele será atribuído 3 vezes ao ivar, executando estes comandos:
convert wedding wedding.jpg
convert picture picture.jpg
convert 1.bmp 1.bmp.jpg
Na minha resposta também a correspondência "$ {i% bmp}" falha.
Mas existe uma solução - você pode usar o findcomando. Veja man findpara detalhes. Você deve digitar algo como o seguinte (verifique a sintaxe com a página de manual antes de tentar):
find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;
(Não tenho muita certeza da parte do nome e tenho alguma dúvida na -execparte, veja man findprimeiro)
Se quiser juntar todas as imagens em um arquivo .jpg, você pode concatená-las com outro filtro, como o mencionado na primeira resposta.
for i in `ls *.bmp`; do convert $i $i.jpg; done
Sim, isso criará um monte de arquivos chamados filename.bmp.jpg, mas fará o trabalho.
ls.