Respostas:
Você pode usar a ferramenta mogrify do ImageMagick
formato mogrify jpg * .bmp
sudo apt install imagemagick
no 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 hyperslug
e 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-format
opçã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 bash
para detalhes do for
comando. 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 *.bmp
parte da resposta salmonmoose significa "executar ls *.bmp
, então a i
parte for atribui cada sequência separada por espaços a i
". O mesmo é alcançado *.bmp
porque 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 i
var, 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 find
comando. Veja man find
para 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 -exec
parte, veja man find
primeiro)
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
.