Bir sürü BMP dosyasını Linux'ta JPEG'e dönüştürme


32

Birisi bana bir sürü BMP dosyası gönderdi ve JPEG formatında onlara ihtiyacım var. GIMP kullanarak onları tek tek dönüştürebiliyordum, ancak hepsini tek seferde yapmayı tercih ederim. Bende Ubuntu var.

Yanıtlar:


46

ImageMagick'in mogrify aracını kullanabilirsiniz

mogrify -format jpg * .bmp

1
ImageMagick Windows için de indirilebildiğinden, bu cevabın Windows için de geçerli olduğunu unutmayın.
Gnoupi

Bu var sudo apt install imagemagickUbuntu ve ekleyerek kalitesini ayarlayabilirsiniz-quality 100
mpen

15

Ubuntu'da ImageMagick'in kurulu olması muhtemeldir .
Yani yapabilir ,

convert filename.bmp filename.jpg

güncelleştirme:

mogrify(Tarafından cevap hyperslugve tarafından yönlendirilen cjm) de iyi bir seçenektir.

Bir görüntüyü yeniden boyutlandırmak, bulanıklaştırmak, kırpmak, despeckle, dither, çizmek, çevirmek, birleştirmek, yeniden örneklemek ve çok daha fazlası için mogrify programını kullanın .
Bu araç benzerlik gösterir dönüştürmek orijinal resim dosyasının üzerine yazılır dışında
(eğer dosya eki değiştirmediğiniz sürece -formatsen istemek değişikliklerle seçeneği).


1
ImageMagick'in mogrify komutu bunun için dönüştürmekten daha iyidir, çünkü joker karakterlerle kolayca kullanılabilir. Hiperslugun cevabını görün.
cjm

7

Somonmoz cevabında küçük bir değişiklik yapmama izin verin:

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

Yukarıdakiler çalışır ancak "bmp.jpg" adlı dosyaları oluşturur. Bu komutla .jpg dosyalarını alabilirsiniz:

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

Bkz man bashayrıntıları için forkomuta. ${i%bmp}Bölüm dizesini anlamına gelen "$ {i}" sonunda alt dize "bmp" olmadan.

"$ {İ}" içindeki dizgeyi dönüştürmek için başka işlemler var. "$ i", "$ {i}" için kısa yoldur. ls *.bmpSalmonmoose cevap araçlarında parçası "yürütme ls *.bmpardından için, ibölüm atar her dize kadar boşluklarla ayrılmış i". Aynı şey *.bmp, dizindeki tüm dosya adları ile eşleştiği için de sağlanır .

Bir dezavantajı var for- dizininizdeki dosyalar adında boşluklar varsa, örneğin "wedding picture 1.bmp" ise, ibu komutları uygulayarak var'a 3 kez atanacaktır :

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

Cevabımda da "$ {i% bmp}" eşleşmesi başarısız oldu.

Ancak bir çözüm var - findbunun yerine komutu kullanabilirsiniz . Detaylar man findiçin bakınız. Şunun gibi bir şey yazmalısınız (lütfen denemeden önce man sayfasının sözdizimini kontrol edin):

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

(İsim bölümünden pek emin değilim ve bölüm hakkında bazı şüphelerim var -exec, man findönce bakın )

Tüm görüntüleri bir .jpg dosyasında birleştirmek istiyorsanız, ilk yanıtta belirtildiği gibi bunları başka bir filtre ile birleştirebilirsiniz.


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

Evet, bu dosyaadı.bmp.jpg adlı bir sürü dosya yapacaktır ancak işi yapacaktır.


Yararsız kullanımı ls.
Dmitry Grigoryev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.