Risposte:
Puoi usare lo strumento mogrify di ImageMagick
mogrify -format jpg * .bmp
sudo apt install imagemagick
su Ubuntu e puoi impostare la qualità aggiungendo-quality 100
È probabile che ImageMagick sia installato su Ubuntu.
Questo può fare ,
convert filename.bmp filename.jpg
aggiornare:
Anche la mogrify
(risposta di hyperslug
e indicata da cjm
) è una buona opzione.
Usa il programma mogrify per ridimensionare un'immagine, sfocare, ritagliare, despeckle, dithering, disegnare, capovolgere, unire, ripetere il campionamento e molto altro.
Questo strumento è simile alla conversione, tranne per il fatto che il file di immagine originale viene sovrascritto
(a meno che non si cambi il suffisso del file con l'-format
opzione) con qualsiasi modifica richiesta.
Vorrei fare un piccolo cambiamento alla risposta salmonmoose:
for i in `ls *.bmp`; do convert $i $i.jpg; done
Quanto sopra funziona ma genera file denominati "bmp.jpg". Puoi ottenere file .jpg con questo comando:
for i in *.bmp; do convert ${i} ${i%bmp}jpg; done
Vedere man bash
per i dettagli del for
comando. La ${i%bmp}
parte indica la stringa "$ {i}" senza la sottostringa "bmp" alla fine.
Esistono altre operazioni per trasformare la stringa in "$ {i}". "$ i" è una scorciatoia per "$ {i}". La ls *.bmp
parte nella risposta salmonmoose significa "esegui ls *.bmp
, quindi la i
parte for assegna ogni stringa separata da spazi a i
". Lo stesso si ottiene *.bmp
perché corrisponde a tutti i nomi di file nella directory.
C'è un inconveniente con for
- se i file nella tua directory hanno spazi nel nome, ad esempio "wedding picture 1.bmp", verrà assegnato 3 volte al i
var, eseguendo questi comandi:
convert wedding wedding.jpg
convert picture picture.jpg
convert 1.bmp 1.bmp.jpg
Nella mia risposta anche la corrispondenza "$ {i% bmp}" non riesce.
Ma c'è una soluzione: puoi invece usare il find
comando. Vedi man find
per i dettagli. Dovresti digitare qualcosa di simile al seguente (controlla la sintassi con la pagina man prima di provarla):
find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;
(Non sono molto sicuro della parte del nome e ho qualche dubbio nella -exec
parte, vedi man find
prima)
Se vuoi unire tutte le immagini in un file .jpg, puoi concatenarle con altri filtri, come quello menzionato nella prima risposta.
for i in `ls *.bmp`; do convert $i $i.jpg; done
Sì, questo renderà un mucchio di file chiamato nomefile.bmp.jpg ma farà il lavoro.
ls
.