sips-s format--setProperty format)オプションを使うと、画像ファイルのフォーマットを変換できる。

参考: 【sips】コマンドで画像のプロパティ情報を確認する

–outオプションで変換後のファイルを指定する

-s format <フォーマット名>で変換先フォーマットを指定し、--outで出力先ファイルを指定する。

$ sips -s format jpeg photo.png --out photo.jpg
/Users/user/Desktop/photo.png
  /Users/user/Desktop/photo.jpg

元のファイル(photo.png)はそのまま残り、変換結果が--outで指定したファイル(photo.jpg)に書き出される。

–outを省略すると拡張子と中身が食い違う

--outを省略すると、sipsは元のファイルに変換結果を上書きする。ただしファイル名の拡張子は変わらないため、拡張子と実際のフォーマットが食い違ったファイルになる。

$ sips -s format jpeg photo.png
Warning: Output file suffix should be jpg
/Users/user/Desktop/photo.png
  /Users/user/Desktop/photo.png

$ file photo.png
photo.png: JPEG image data, JFIF standard 1.01, ...

拡張子の不一致はsips自身が警告してくれる。ただしファイルは警告を出したうえでそのまま上書きされる。変換後もファイル名を保ちたい場合を除き、--outで拡張子の合ったファイル名を指定した方が安全である。

複数ファイルをまとめて変換する

変換元ファイルを複数指定し、--outにディレクトリを指定すると、ディレクトリ内に拡張子が変換後のフォーマットに合わせて変更されたファイルが作成される。

$ mkdir converted
$ sips -s format jpeg photoA.png photoB.png --out converted/
Warning: Output file suffix changed to jpg
Warning: Output file suffix changed to jpg
/Users/user/Desktop/photoA.png
  /Users/user/Desktop/converted/photoA.png
/Users/user/Desktop/photoB.png
  /Users/user/Desktop/converted/photoB.png

$ ls converted/
photoA.jpg
photoB.jpg

単一ファイル変換時と異なり、出力先がディレクトリの場合は拡張子が自動的に変換後のフォーマットへ書き換わる。

HEICとJPEGを相互変換する

iPhoneで撮影した写真はHEIC形式で保存されることが多く、JPEGへの変換が必要になる場面がある。sipsformatにHEIC・JPEGどちらも指定できるため、双方向に変換できる。

$ sips -s format jpeg photo.heic --out photo.jpg
$ sips -s format heic photo.jpg --out photo.heic

formatOptionsで画像品質を指定する

JPEGなど圧縮率を持つフォーマットに変換する場合、-s formatOptionsで画質を指定できる。lownormalhighbestのキーワードか、0〜100のパーセント値で指定する。

$ sips -s format jpeg -s formatOptions 50 photo.png --out photo_low.jpg
$ ls -la photo.jpg photo_low.jpg
-rw-r--r--  1 user  staff  86051  9  14 23:04 photo.jpg
-rw-r--r--  1 user  staff  50653  9  14 23:04 photo_low.jpg

formatOptionsを省略した場合はdefaultが使われる。

変換できるフォーマットの一覧を確認する

--formatsオプションを付けると、対応しているフォーマットの一覧を確認できる。

$ sips --formats
Supported Formats:
-------------------------------------------
com.adobe.pdf                pdf   Writable
com.adobe.photoshop-image    psd   Writable
com.apple.icns               icns  Writable
com.compuserve.gif           gif   Writable
com.microsoft.bmp            bmp   Writable
com.microsoft.ico            ico   Writable
public.avif                  avif  Writable
public.heic                  heic  Writable
public.jpeg                  jpeg  Writable
public.jpeg-2000             jp2   Writable
public.png                   png   Writable
public.tiff                  tiff  Writable
(以下略)

Writableと表示されているフォーマットが-s formatで変換先として指定できる。一部のRAW画像フォーマットのように、読み込みはできても書き込み(変換先指定)には対応していないフォーマットもある。

参考

SIPS Command: Scriptable Image Processing System in macOS