Batch converting PNG to JPG in linux
誰かlinuxでPNGをJPGにバッチ変換する良い方法を知っていますか?(私はUbuntuを使っています)。
シェルスクリプトにドロップするだけのpng2jpgバイナリがあれば理想的です。
誰かlinuxでPNGをJPGにバッチ変換する良い方法を知っていますか?(私はUbuntuを使っています)。
シェルスクリプトにドロップするだけのpng2jpgバイナリがあれば理想的です。
あなたの最善の策は、 Imagemagick
私は実際の使用法の専門家ではありませんが、私はあなたがかなりこれに関連する画像を行うことができます知っています!
例は次のとおりです:
convert image.png image.jpg
そしてそれは、変換された画像を作成するだけでなく、オリジナルを保持します。バッチに関しては 私はあなたがMogrifyツールを使用する必要があると思います(imagemagickのときに同じコマンドラインから)。これは古い画像を上書きすることに注意してください。
コマンドは次のとおりです。
最もシンプルな解決策は、すでに投稿されているようなものです。
for i in *.png ; do convert "$i" "${i%.*}.jpg" ; done
なぜか私はbashでのループを避ける傾向があるので、ここではbashを使った、よりunixyなxargsのアプローチを紹介します。GNU Parallelを使って複数のジョブを一度に実行し、パフォーマンスを向上させます。多くのシステムにデフォルトでインストールされており、ほぼ間違いなくあなたのレポにあるはずです (周りに置いておくと良いプログラムです)。
ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.*}.jpg"'
統計情報 (ETA、完了したジョブ、ジョブごとの平均時間など) が必要な場合は
ls -1 *.png | parallel convert '{}' '{.}.jpg'
GNU Parallel を使用している場合は、別の構文もあります。
ただ最も簡単なコマンドが欲しい人のために:
変換とkeep元のファイル:
mogrify -format jpg *.png
変換とremove元のファイル。
mogrify -format jpg *.png && rm *.png
ちょっと遅れてしまいましたが、クリに慣れていない人のために混乱を解消するために、以下のように説明しています。
Example Directory
bar.png
foo.png
foobar.jpg
mogrify -format jpg *.png
結果
bar.png
bar.jpg
foo.png
foo.jpg
foobar.jpg
説明
-format
) This tool is similar to convert except that the original image file is overwritten (unless you change the file suffix with the -format option)
オプションは、フォーマットを変更することを指定し、次の引数にはタイプ(この場合は jpg)を指定する必要があります。 - format
は入力ファイル(.png で終わるすべてのファイル)です。すべてのpngファイルをjpgに変換し、元のファイルを削除します。
mogrify -format jpg *.png && rm *.png
結果
bar.jpg
foo.jpg
foobar.jpg
説明
*.png
はブール演算子です。要するに: &&
は 短絡評価 を行うので、右の部分は there were no errors の場合にのみ実行されます。これは、変換時にエラーがあった場合、元のファイルをすべて削除したくない場合に便利です。 0
コマンドはファイルを削除します。何年も遅れてしまいましたが、この目的のために私が作成した png2jpeg ユーティリティがあります。
バッチ処理の場合:
for img in *.png; do
convert "$img" "$img.jpg"
done
ファイル名が image1.png.jpg のようになってしまいますが。他のシェルのことは知りませんが、唯一の違いはループ構文でしょう。
これは、ファイルが複数のディレクトリにまたがるときに変換するために私が使用するものです。私のオリジナルのものは TGA to PNG
find . -name "*.tga" -type f | sed 's/\.tga$//' | xargs -I% convert %.tga %.png
概念はあなたが必要とするファイルを find
し、拡張子を除去してから xargs
でそれを再び追加することです。だからPNGからJPGのために、拡張子を変更し、アルファチャンネルを扱うために1つの余分なことをするでしょうすなわち背景を設定して(この例では白ですが、あなたはそれを変更することができます)その後、イメージを平らにする
find . -name "*.png" -type f | sed 's/\.png$//' | xargs -I% convert %.png -background white -flatten %.jpg