Konversi banyak file BMP ke JPEG di Linux

32

Seseorang mengirimi saya banyak file BMP dan saya membutuhkannya dalam format JPEG. Saya bisa mengonversinya satu per satu menggunakan GIMP, tetapi saya lebih suka melakukan semuanya sekaligus. Saya punya Ubuntu.

JoelFan
sumber

Jawaban:

46

Anda dapat menggunakan alat mogrify ImageMagick

mogrify -format jpg * .bmp
hyperslug
sumber
1
Perhatikan bahwa jawaban ini juga berfungsi untuk Windows, karena ImageMagick juga tersedia untuk diunduh untuk Windows.
Gnoupi
Ini ada sudo apt install imagemagickdi Ubuntu dan Anda dapat mengatur kualitasnya dengan menambahkan-quality 100
mpen
15

Anda mungkin memasang ImageMagick di Ubuntu.
Itu bisa dilakukan ,

convert filename.bmp filename.jpg

memperbarui:

The mogrify(dijawab oleh hyperslugdan disebut oleh cjm) juga merupakan pilihan yang baik.

Gunakan program mogrify untuk mengubah ukuran gambar, blur, krop, despeckle, gentar, menggambar, membalik, bergabung, sampel ulang, dan banyak lagi.
Alat ini serupa untuk dikonversi kecuali bahwa file gambar asli ditimpa
(kecuali Anda mengubah akhiran file dengan -formatopsi) dengan perubahan yang Anda minta.

nik
sumber
1
Perintah mogrify ImageMagick lebih baik daripada mengkonversi untuk ini, karena dapat digunakan dengan mudah dengan wildcard. Lihat jawaban hyperslug.
cjm
7

Biarkan saya melakukan sedikit perubahan pada jawaban salmonmoose:

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

Di atas berfungsi tetapi menghasilkan file bernama "bmp.jpg". Anda bisa mendapatkan file .jpg dengan perintah ini:

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

Lihat man bashuntuk detail forperintah. Bagian ini ${i%bmp}berarti string "$ {i}" tanpa substring "bmp" di akhir.

Ada operasi lain untuk mengubah string di "$ {i}". "$ i" adalah singkatan untuk "$ {i}". Bagian ls *.bmpdalam jawaban salmonmoose berarti "mengeksekusi ls *.bmp, maka bagian for imenetapkan setiap string yang dipisahkan oleh spasi untuk i". Hal yang sama dicapai oleh *.bmpkarena cocok dengan semua nama file di direktori.

Ada kekurangan dengan for- jika file dalam direktori Anda memiliki spasi dalam nama, misalnya "gambar pernikahan 1.bmp", itu akan diberikan 3 kali ke ivar, melakukan perintah-perintah ini:

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

Dalam jawaban saya juga kecocokan "$ {i% bmp}" gagal.

Tapi ada solusinya - Anda bisa menggunakan findperintah sebagai gantinya. Lihat man finddetailnya. Anda harus mengetikkan sesuatu seperti berikut (silakan periksa sintaks dengan halaman manual sebelum mencobanya):

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

(Saya tidak begitu yakin dengan nama bagiannya, dan saya ragu beberapa -execbagian, lihat man finddulu)

Jika Anda ingin menggabungkan semua gambar dalam satu file .jpg, Anda dapat menggabungkannya dengan filter lain, seperti yang disebutkan dalam jawaban pertama.

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

Ya, ini akan membuat banyak file bernama filename.bmp.jpg tetapi itu akan berhasil.

salmonmoose
sumber
Penggunaan tidak berguna ls.
Dmitry Grigoryev