ウェブサイト検索

PNG を JPG に、またはその逆にバッチ変換する 4 つの方法


コンピューティングにおけるバッチ処理とは、プログラム内の一連のタスクを非対話的に実行することです。このガイドでは、Linux コマンドライン ツールを使用して、複数の .PNG 画像を .JPG に、またはその逆にバッチ変換する 4 つの簡単な方法を紹介します。

すべての例では convert コマンド ライン ツールを使用しますが、mogrify を使用してこれを実現することもできます。

convert を使用するための構文は次のとおりです。

convert input-option input-file output-option output-file

そしてmogrify の場合は次のとおりです。

mogrify options input-file

: mogrify を使用すると、デフォルトで元の画像ファイルが新しい画像ファイルに置き換えられますが、これを防ぐことは可能です。マニュアルページにある特定のオプションを使用します。

.JPG に変換する場合、すべての .PNG 画像を .JPG 形式にバッチ変換するさまざまな方法を以下に示します。 .PNG を使用すると、必要に応じてコマンドを変更できます。

1.「ls」コマンドと「xargs」コマンドを使用して PNG を JPG に変換します

ls コマンドを使用すると、すべてのpng 画像を一覧表示でき、xargs を使用すると、標準入力からすべての画像を変換するためのconvert コマンドを構築して実行できます。 .png 画像を .jpg に変換します。

----------- Convert PNG to JPG ----------- 
ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'

----------- Convert JPG to PNG ----------- 
ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'

上記コマンドで使用するオプションについて説明します。

  1. -1 – フラグは ls に 1 行に 1 つの画像をリストするよう指示します。
  2. -n – 引数の最大数を指定します。この場合は 1 です。
  3. -c – bash に指定されたコマンドを実行するように指示します。
  4. $ {0%.png}.jpg – 新しい変換された画像の名前を設定します。% 記号は古いファイル拡張子を削除するのに役立ちます。

ls -ltr コマンドを使用して、すべてのファイルを変更日時ごとに一覧表示しました。

同様に、上記のコマンドを微調整することで、すべての .jpg 画像を .png に変換できます。

2. GNU「Parallel」コマンドを使用して PNG を JPG に変換する

GNU Parallel を使用すると、ユーザーは標準入力からシェル コマンドを並行して構築および実行できます。システムに GNU Parallel がインストールされていることを確認してください。そうでない場合は、以下の適切なコマンドを使用してインストールしてください。

sudo apt-get install parallel     [On Debian/Ubuntu systems]
sudo yum install parallel         [On RHEL/CentOS and Fedora]

Parallel ユーティリティをインストールしたら、次のコマンドを実行して、すべての .png 画像を標準入力から .jpg 形式に変換できます。

----------- Convert PNG to JPG ----------- 
parallel convert '{}' '{.}.jpg' ::: *.png

----------- Convert JPG to PNG -----------
parallel convert '{}' '{.}.png' ::: *.jpg

どこ、

  1. {} – 入力ソースから読み取られた完全な行で置換される置換文字列である入力行。
  2. {.} – 入力行から拡張子を引いたもの。
  3. ::: – 入力ソース、つまり、*png または *jpg が引数である上記の例のコマンド ラインを指定します。

あるいは、次のように ls と Parallel コマンドを一緒に使用して、すべての画像をバッチ変換することもできます。

----------- Convert PNG to JPG ----------- 
ls -1 *.png | parallel convert '{}' '{.}.jpg'

----------- Convert JPG to PNG -----------
ls -1 *.jpg | parallel convert '{}' '{.}.png'

3. 「for ループ」コマンドを使用して PNG を JPG に変換します

シェル スクリプトを記述する煩雑な作業を避けるために、次のようにコマンド ラインから for ループ を実行できます。

----------- Convert PNG to JPG ----------- 
bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo “image $image converted to ${image%.png}.jpg ”; done'

----------- Convert JPG to PNG -----------
bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo “image $image converted to ${image%.jpg}.png ”; done'

上記のコマンドで使用される各オプションの説明:

  1. -c を使用すると、一重引用符で囲んだ for ループ ステートメントを実行できます。
  2. image 変数は、ディレクトリ内の画像の数を表すカウンターです。
  3. 変換操作ごとに、echo コマンドは、行 $image& に変換されている行で png 画像が jpg 形式に変換され、その逆も行われたことをユーザーに通知します。 #36 {image%.png}.jpg 」。
  4. 「$ {image%.png}.jpg」 は、変換された画像の名前を作成します。% は古い画像形式の拡張子を削除します。

4. シェルスクリプトを使用して PNG を JPG に変換する

前の例のようにコマンド ラインを汚したくない場合は、次のような小さなスクリプトを作成します。

: 1 つの形式から変換する場合は、以下の例のように .png 拡張子と .jpg 拡張子を適切に交換してください。別のものに。

#!/bin/bash
#convert
for image in *.png; do
        convert  "$image"  "${image%.png}.jpg"
        echo “image $image converted to ${image%.png}.jpg ”
done
exit 0 

それを convert.sh として保存し、スクリプトを実行可能にしてから、画像が含まれるディレクトリ内から実行します。

chmod +x convert.sh
./convert.sh

要約すると、.png 画像を .jpg 形式に、またはその逆にバッチ変換するいくつかの重要な方法について説明しました。画像を最適化したい場合は、Linux で png および jpg 画像を圧縮する方法を示すガイドを参照してください。

ターミナル上で画像をある形式から別の形式に変換するための Linux コマンド ライン ツールなど、他の方法を共有したり、以下のコメント セクションを通じて質問したりすることもできます。