Můžete použít nástroj ImageMagick mogrify
mogrify -format jpg *.bmp
Pravděpodobně máte na Ubuntu nainstalovaný ImageMagick.
To může stačit,
convert filename.bmp filename.jpg
aktualizace:
mogrify
(odpověděl hyperslug
a odkazuje na cjm
) je také dobrá volba.
Použijte mogrify program pro změnu velikosti obrázku, rozmazání, oříznutí, odstranění skvrn, rozklad, kreslení, převrácení, spojení, převzorkování a mnoho dalšího.
Tento nástroj je podobný nástroji konvertovat kromě toho, že původní soubor obrázku je přepsán
(pokud nezměníte příponu souboru s-format
možnost) se všemi požadovanými změnami.
Dovolte mi udělat malou změnu v odpovědi lososího moose:
for i in `ls *.bmp`; do convert $i $i.jpg; done
Výše uvedené funguje, ale generuje soubory s názvem "bmp.jpg". Soubory .jpg můžete získat pomocí tohoto příkazu:
for i in *.bmp; do convert ${i} ${i%bmp}jpg; done
Viz man bash
podrobnosti o for
příkaz. ${i%bmp}
část znamená řetězec "${i}" bez podřetězce "bmp" na konci.
Existují další operace pro transformaci řetězce v "${i}". "$i" je zkratka pro "${i}". ls *.bmp
část v odpovědi lososa znamená „provést ls *.bmp
, pak pro i
part přiřadí každému řetězci oddělenému mezerami i
". Totéž je dosaženo pomocí *.bmp
protože odpovídá všem názvům souborů v adresáři.
for
má nevýhodu - pokud soubory ve vašem adresáři mají v názvu mezery, například "svatební obrázek 1.bmp", bude přiřazen 3krát k i
var, provádějící tyto příkazy:
convert wedding wedding.jpg
convert picture picture.jpg
convert 1.bmp 1.bmp.jpg
V mé odpovědi také selhává shoda "${i%bmp}".
Ale existuje řešení - můžete použít find
místo toho příkaz. Viz man find
pro detaily. Měli byste napsat něco jako následující (než to vyzkoušíte, zkontrolujte syntaxi pomocí manuálové stránky):
find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;
(Nejsem si příliš jistý částí názvu a mám určité pochybnosti o -exec
část, viz man find
první)
Pokud chcete spojit všechny obrázky do jednoho souboru .jpg, můžete je zřetězit pomocí jiného filtru, jak je uvedeno v první odpovědi.