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への変換が必要になる場面がある。sipsはformatにHEIC・JPEGどちらも指定できるため、双方向に変換できる。
$ sips -s format jpeg photo.heic --out photo.jpg
$ sips -s format heic photo.jpg --out photo.heic
formatOptionsで画像品質を指定する
JPEGなど圧縮率を持つフォーマットに変換する場合、-s formatOptionsで画質を指定できる。low・normal・high・bestのキーワードか、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画像フォーマットのように、読み込みはできても書き込み(変換先指定)には対応していないフォーマットもある。
