ImageMagick を使用することをお勧めします。
私は実際の使い方の専門家ではありませんが、これを使って画像関連のことなら何でもできると思います!
例:
convert image.png image.jpg
これにより、元の画像が保持され、変換された画像が作成されます。
バッチ変換に関しては、ImageMagick の一部である Mogrify ツールを使用する必要があると思います。
これは上書きされることに注意してください 古い画像。
コマンドは次のとおりです:
mogrify -format jpg *.png
解決策は他にもいくつかあります。
最も簡単な解決策は、すでに投稿されているほとんどのものと同様です。シンプルな bash for ループ。
for i in *.png ; do convert "$i" "${i%.*}.jpg" ; done
なんらかの理由で、私は bash でのループを避ける傾向があるため、名前マングリングに bash を使用する、より unixy な xargs アプローチを次に示します。
ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.*}.jpg"'
私が使っているもの。 GNU Parallel を使用して複数のジョブを一度に実行し、パフォーマンスを向上させます。これはデフォルトで多くのシステムにインストールされており、ほぼ間違いなくリポジトリに含まれています (手元に置いておくとよいプログラムです)。
ls -1 *.png | parallel convert '{}' '{.}.jpg'
ジョブ数のデフォルトは、使用している CPU コアの数です。デュアルコア システムで 3 つのジョブを使用すると、CPU 使用率が向上することがわかりました。
ls -1 *.png | parallel -j 3 convert '{}' '{.}.jpg'
また、統計情報が必要な場合 (ETA、完了したジョブ、ジョブごとの平均時間など)
ls -1 *.png | parallel --eta convert '{}' '{.}.jpg'
GNU Parallel を使用している場合は、別の構文もあります。
parallel convert '{}' '{.}.jpg' ::: *.png
他のいくつかのバージョン (debian を含む) にも同様の構文があります。
parallel convert '{}' '{.}.jpg' -- *.png
convert
多くの Linux ディストリビューションにあるコマンドは、ImageMagick スイートの一部としてインストールされます。 convert
を実行する bash コードは次のとおりです。 ディレクトリ内のすべての PNG ファイルで、その二重拡張子の問題を回避します:
for img in *.png; do
filename=${img%.*}
convert "$filename.png" "$filename.jpg"
done