web-dev-qa-db-ja.com

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

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

33
JoelFan

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

 mogrify -format jpg * .bmp 
50
hyperslug

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

convert filename.bmp filename.jpg

更新:

mogrifyhyperslugが応答し、cjmが参照する)も適切なオプションです。

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

16
nik

サーモンムースの答えを少し変更しましょう:

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

forコマンドの詳細については、man bashを参照してください。 ${i%bmp}部分は、文字列 "$ {i}"を意味し、末尾に "bmp"サブ文字列がありません。

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

forには欠点があります。たとえば、「wedding picture 1.bmp」のように、ディレクトリ内のファイルの名前にスペースが含まれている場合、i varに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ファイルに結合したい場合は、最初の回答で述べたように、それらを他のフィルターと連結できます。

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

はい、これにより、filename.bmp.jpgという一連のファイルが作成されますが、これでうまくいきます。

1
salmonmoose

あなたはImageMagickの助けを借りてそれを達成することができます。 this link は例です

0
Matias