Linuxで多数のBMPファイルをJPEGに変換する


32

誰かから大量のBMPファイルが送られてきましたが、JPEGで必要です。GIMPを使用してそれらを1つずつ変換できますが、一度にすべてを実行したいです。Ubuntuがあります。

回答:


46

ImageMagickのmogrifyツールを使用できます

mogrify -format jpg * .bmp

1
ImageMagickはWindowsでもダウンロードできるため、この回答はWindowsでも機能します。
グヌーピ

それはだsudo apt install imagemagickUbuntuの上で、あなたが追加することで品質を設定することができます-quality 100
MPEN

15

UbuntuにImageMagickがインストールされている可能性があります。
それができる

convert filename.bmp filename.jpg

更新:

mogrify(によって答えhyperslugとによって参照されるcjm)にも良いオプションです。

mogrifyプログラムを使用して、画像のサイズ変更、ぼかし、切り抜き、斑点除去、ディザリング、描画、反転、結合、再サンプリングなどを行います。
このツールは、元のイメージファイルが (オプションでファイルサフィックスを変更しない限り)要求された変更で上書きされることを除いて、変換に似て
います-format


1
ImageMagickのmogrifyコマンドは、ワイルドカードで簡単に使用できるため、このために変換するよりも優れています。hyperslugの答えをご覧ください。
cjm 2009

7

サーモンムースの答えを少し変えてみましょう。

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

上記は機能しますが、「bmp.jpg」という名前のファイルを生成します。次のコマンドで.jpgファイルを取得できます。

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

コマンドのman bash詳細を参照してくださいfor。この${i%bmp}部分は、文字列「$ {i}」の末尾に「bmp」サブストリングがないことを意味します。

「$ {i}」の文字列を変換する他の操作があります。「$ i」は「$ {i}」の短縮形です。ls *.bmpsalmonmooseの回答の部分は「実行」を意味しls *.bmp、次にfor i部分はスペースで区切られた各文字列をi「」に割り当てます。*.bmpディレクトリ内のすべてのファイル名と一致するため、同じことが実現されます。

欠点がありforます-ディレクトリ内のファイルの名前にスペースが含まれている場合(「wedding picture 1.bmp」など)、ivarに3回割り当てられ、次のコマンドを実行します。

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

私の答えでは、一致する「$ {i%bmp}」も失敗します。

しかし、解決策があります- find代わりにコマンドを使用できます。詳細man findを参照してください。次のようなものを入力する必要があります(試す前にmanページで構文を確認してください):

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

(名前の部分についてはよく-execわかりませんが、その部分には疑問があります。man find最初に参照してください)

1つの.jpgファイル内のすべての画像を結合する場合、最初の回答で述べたように、それらを他のフィルターと連結できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.