macOSでPNGファイルをJPEGファイルに一括変換する

大量のPNGファイルをJPEGに変換したい

JPEGしか対応していないプロジェクトに対応するため、Macで大量のPNGファイルをJPEGに変換する必要が出てきました。ネットで検索するとフォルダアクションで自動的に変換する記事が多数出てくるのですが、フォルダアクションで変換するとExif情報に問題があるようでRe:VIEWでrake pdf時に以下のエラーが出力されました(Re:VIEW Starterだとextractbbコマンドを呼び出さないためエラーは出ません)。

extractbb:warning: JPEG: Inconsistent resolution may have specified in Exif and JFIF: 144x144 - 72x72
extractbb:warning: JPEG: Inconsistent resolution may have specified in Exif and JFIF: 144x144 - 72x72
extractbb:warning: JPEG: Inconsistent resolution may have specified in Exif and JFIF: 144x144 - 72x72
extractbb:warning: JPEG: Inconsistent resolution may have specified in Exif and JFIF: 144x144 - 72x72
extractbb:warning: JPEG: Inconsistent resolution may have specified in Exif and JFIF: 144x144 - 72x72
extractbb:warning: JPEG: Inconsistent resolution may have specified in Exif and JFIF: 144x144 - 72x72

mogrifyコマンドで変換する

ImageMagickのmogrifyコマンドでPNGからJPEGへ一括変換できるとTwitterで教えてもらいました。

まずImageMagickをインストールします。

$ brew install imagemagick

PNG画像があるディレクトリに移動して、mogrifyコマンドで一括変換を行います(元のPNGファイルも残されます)。

$ mogrify -format jpeg *.png

これでJPEGファイルへ一括変換されました。ffmpegを導入している場合は下記のコマンドでも同様のことができます。

for i in *.png; do ffmpeg -i $i ${i%.png}.jpeg;done

憶えておくと便利ですね。