Konwertuj kilka plików BMP na JPEG w systemie Linux

32

Ktoś przysłał mi kilka plików BMP i potrzebuję ich w formacie JPEG. Mógłbym je przekonwertować jeden po drugim za pomocą GIMP, ale wolę zrobić to wszystko za jednym razem. Mam Ubuntu.

JoelFan
źródło

Odpowiedzi:

46

Możesz użyć narzędzia mogrify ImageMagick

mogrify -format jpg * .bmp
hiperslug
źródło
1
Pamiętaj, że ta odpowiedź działa również w systemie Windows, ponieważ ImageMagick jest również dostępny do pobrania dla systemu Windows.
Gnoupi
Jest sudo apt install imagemagickna Ubuntu i możesz ustawić jakość, dodając-quality 100
mpen
15

Prawdopodobnie masz zainstalowany ImageMagick na Ubuntu.
Że może to zrobić ,

convert filename.bmp filename.jpg

aktualizacja:

Opcja mogrify(odpowiedź udzielona przez hyperslugi skierowana przez cjm) jest również dobrą opcją.

Użyj programu mogrify , aby zmienić rozmiar obrazu, rozmycie, kadrowanie, usuwanie efektu , roztrząsanie , rysowanie, odwracanie, łączenie, ponowne próbkowanie i wiele więcej.
To narzędzie jest podobne do konwertowania, z tym że oryginalny plik obrazu jest zastępowany
(chyba że zmienisz sufiks pliku za pomocą -formatopcji) wraz ze wszystkimi żądanymi zmianami.

nik
źródło
1
Polecenie zamglenia ImageMagick jest lepsze niż konwersja, ponieważ można go łatwo używać z symbolami wieloznacznymi. Zobacz odpowiedź hyperslug.
cjm
7

Pozwólcie, że zrobię małą zmianę w odpowiedzi łososia:

for i in `ls *.bmp`; do convert $i $i.jpg; done

Powyższe działa, ale generuje pliki o nazwie „bmp.jpg”. Możesz uzyskać pliki .jpg za pomocą tego polecenia:

for i in *.bmp; do convert ${i} ${i%bmp}jpg; done

Zobacz man bashszczegóły forpolecenia. ${i%bmp}Część oznacza napis „$ {i}” bez „bmp” podciągu na końcu.

Istnieją inne operacje przekształcania łańcucha w „$ {i}”. „$ i” to skrót od „$ {i}”. ls *.bmpCzęść w salmonmoose pomocą odpowiedź „wykonać ls *.bmp, to dla iczęści przypisuje każdemu ciąg oddzielonych spacjami i”. To samo można osiągnąć, *.bmpponieważ pasuje do wszystkich nazw plików w katalogu.

Wadą jest to, forże - jeśli pliki w katalogu mają spacje w nazwie, na przykład „zdjęcie ślubne 1.bmp”, zostaną przypisane do ivar 3 razy , wykonując następujące polecenia:

convert wedding wedding.jpg 
convert picture picture.jpg
convert 1.bmp  1.bmp.jpg

W mojej odpowiedzi również dopasowanie „$ {i% bmp}” kończy się niepowodzeniem.

Ale jest rozwiązanie - findzamiast tego możesz użyć polecenia. Zobacz man findszczegóły. Powinieneś wpisać coś takiego (przed wypróbowaniem sprawdź składnię ze stroną podręcznika):

find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;

(Nie jestem pewien co do nazwy i mam co do tego wątpliwości -exec, patrz man findnajpierw)

Jeśli chcesz połączyć wszystkie obrazy w jednym pliku .jpg, możesz połączyć je z innym filtrem, jak ten wymieniony w pierwszej odpowiedzi.

anonimowy
źródło
1
for i in `ls *.bmp`; do convert $i $i.jpg; done

Tak, utworzy to zbiór plików o nazwie filename.bmp.jpg, ale wykona zadanie.

łosoś łososiowy
źródło
Bezużyteczne użycie ls.
Dmitrij Grigoriew