
コマンドラインとsipsを使った画像ファイル形式の変換
OS X(およびほとんどのLinuxディストリビューション)には、様々なツールが直接組み込まれているため、画像を新しいファイル形式に変換するのは非常に簡単です。最も簡単な方法はプレビューを使って画像を変換することですが、以前に説明したのと同じsipsツールを使ってコマンドラインから一括でサイズを変更するコマンドラインオプションもあります。sipsを使えば、個々の画像を新しい画像形式に変換したり、複数の画像を一括で変換したりできます。
コマンドラインからの簡単な画像変換
sips を使用して単一の画像を変換するには、次のコマンド文字列構文を使用します。
sips -s format [image type] [file name] --out [output file]
たとえば、「test.jpg」という名前のファイルを PNG に変換する場合、 sips 構文は次のようになります。
sips -s format png test.jpg --out test.png
sipsによるバッチ画像変換
複数の画像を変換するのは少し複雑で、sipsでサイズを変更するときのような単純なワイルドカードを使っても、同じようには動作しません。*のような一般的なワイルドカードを使ってもファイル名は変更されないので、代わりに非常にシンプルなシェルスクリプトを使って、以下のコマンド構文を使用します。
for i in [filename]; do sips -s format [image type] $i --out [destination]/$i.[extension];done
これを利用して、現在のディレクトリの「Converted」という新しいサブフォルダ内の .jpeg ファイルのフォルダを png ファイルに変換します。
for i in *.jpeg; do sips -s format png $i --out Converted/$i.png;done
このコマンドを実行すると、新しいディレクトリ内のすべての JPEG 画像が PNG 形式に変換される可能性があります。
厄介な落とし穴は、変換後のファイル名に元のファイルタイプも含まれることです。つまり、「test.jpeg.png」というファイル名になってしまうのです。ファイル拡張子はそのまま残りますが、これは命名方法の問題です。この問題を回避するには、まずファイル名を変更し、その後で同様のbashスクリプト、正規表現、またはmvコマンドを使って適切なファイル拡張子を追加します。
一部のファイル形式で sips を実行すると、exif データに関する「lingpng 警告」エラーが発生する可能性がありますが、これらのエラーのほとんどは無視でき、イメージ変換は引き続き実行されます。
バッチ変換のアイデアを提供してくれたThomに感謝します