sips 画像編集のコマンド

Macにデフォルトで入っている sips コマンドは、画像のタイプ変換、サイズ変更、回転、反転、クロップなどが行える気軽なツール。

sip コマンドは画像ファイルの変更がサクッと出来る小気味良いツールです。比較的古くからMacにデフォルトで入ってます。

  • ファイルタイプの変換
  • イメージサイズ・解像度の変更
  • 回転、反転、クロップ、余白

他にもメタデータの読み書きやカラープロファイルの操作などもできます。新しいバージョンでは javascript と連携して複雑なこともできるようになりました。

変更の際、出力パスを指定しなければ上書きしてくれることや、ファイル変更の際に可能な限りオリジナルの情報を維持することなど、気が利いています。

sips <オプション> <入力パス>

パスの変更を伴わない編集では出力パスを書かない場合、上書きとなります。

フォルダ内のファイルをまとめて処理したいときはパスの最後にスラッシュを付けてワイルドカードを加えます。

sips オプション 入力フォルダパス/*

編集後に別の名前になる場合は --out を付けます。

sips <オプション> <入力パス> --out <出力パス>

情報

さくっと情報を得るには、-g all を指定します。g は多分 get の意味だと思います。

sips -g all <入力パス>
pixelWidth:	1800
pixelHeight:	1350
typeIdentifier:	public.jpeg
format:	jpeg
formatOptions:	default
dpiWidth:	72.000
dpiHeight:	72.000
samplesPerPixel:	3
bitsPerSample:	8
hasAlpha:	no
space:	RGB
profile:	sRGB IEC61966-2.1

このように簡素なメタデータが取得できます。
狙ったキーの値だけ必要なら、-g pixelWidth みたいに書くんでしょうか。

値を消したり、編集したりもできます。プロファイルに応じた調色をしたりプロファイルをセットしたりいろいろ出来るようです。

取得出来るのは以下の通り(v10.4.4の場合)

all binary data
allxml binary data

Image property keys:
dpiHeight float
dpiWidth float
pixelHeight integer (read-only)
pixelWidth integer (read-only)
typeIdentifier string (read-only)
format string jpeg | tiff | png | gif | jp2 | pict | bmp | qtif
| psd | sgi | tga
formatOptions string default | [low|normal|high|best|<percent>] |
[lzw|packbits]
space string (read-only)
samplesPerPixel integer (read-only)
bitsPerSample integer (read-only)
creation string (read-only)
make string
model string
software string (read-only)
description string
copyright string
artist string
profile binary data
hasAlpha boolean (read-only)

Profile property keys:
description utf8 string
size integer (read-only)
cmm string
version string
class string (read-only)
space string (read-only)
pcs string (read-only)
creation string
platform string
quality string normal | draft | best
deviceManufacturer string
deviceModel integer
deviceAttributes0 integer
deviceAttributes1 integer
renderingIntent string perceptual | relative | saturation | absolute
creator string
copyright string
md5 string (read-only)

プロパティは、-g がGet、-s がセット、-d がデリート、-e がえーと embed、まあいろいろとそういった感じです。例えば -g creator で creator の情報をゲットでき、-s creator 〜 でセットできるといった法則です。

メタデータの機能は使わないので雑なままですが以上です。

イメージサイズの変更

sips でよく使うイメージサイズの編集です。

-Z <数値>  … 縦横いずれか大きいほうの数値に応じたリサイズ

-z <h値> <w値> … 高さと幅を指定してリサイズ(比率を変更すると画像が歪む)

–resampleWidth <w値> … 指定の幅に合わせて比率を保ったリサイズ

–resampleHeight <h値> … 指定の高さに合わせて比率を保ったリサイズ

回転・反転・切り抜き・余白

-r <数値(角度)> … 指定数° 回転。90度単位でない場合余白が作られる

-f <horizontal | vertical> … 指定方向の反転。horizontal(水平) または vertical(垂直)を指定

-c <h値> <w値> … 指定値に応じて切り抜き

-p <h値> <w値> … 指定されたサイズに合わせてパディング(余白)を作る

--padColor <hexカラー値> … 背景色の指定。デフォルトは黒 000000。白は ffffff

-c でクロップするとき、指定サイズが元画像より大きければ余白が作られます。

-p で余白を作るとき、指定サイズより元画像が大きければクロップになります。

余白が作られるときの背景色を --padColor で指定します。#FFFFFF の形式ですが、# は要りません。

 

ファイルタイプ変換

ファイルタイプの変換も sips が得意とするところです。最もよく使う機能でもあります。

sips -s format <TYPE> <入力> --out <出力>

こうですね。image.psd を image.jpg に変換するならこう。

sips -s format jpeg image.psd --out image.jpg

jpeg は jpg ではなく正しく jpeg と指定します。ファイル変換は優秀で、aiファイルでも出来ました。

jpeg の場合は画質を指定できます。数値はパーセント、85 や 90 というように指定します。

-s formatOptions <数値>

sips のバージョン

sips は MacOSXの比較的初期の頃から存在していて、バージョンも上がっており、そのバージョンによって出来ること出来ないことに大きな差があります。

特に macOS 10.14 Mojave の ver. 10.4.4 と、macOS 10.15 catalina の ver.294 の断絶は大きくて、許しがたい溝があります。

10.14 Mojave の sips 10.4.4

sips バージョン 10.4.4 はわりと出来損ないです。man や –help では扱えるファイルタイプとして次のリストが示されます。

jpeg | tiff | png | gif | jp2 | pict | bmp | qtif | psd | sgi | tga

が、このリストの意味がわかりません。これ以外にも開いたり編集したりできるファイルタイプが幾つもあります。そしてここにリストされているのに実際には何もできない未対応タイプもあります。

使えないタイプは pict です。pict ファイルを入力しても何もできません。

何をやっても  Segmentation fault: 11 など、エラーになります。

もちろんタイプ変換して書き出すこともできません。はっきりと未対応です。にもかかわらず平然と対応タイプとしてリストしているってのは、これは仕様じゃなく不具合ではないかと思います。

そう疑うには理由があって、このバージョンの次のバージョン 294では pict ファイルが正しく扱えるように修正されているからです。

Mojave はメインマシンのOSなので、この不具合は手痛いです。ファイルタイプの変換には別の方法を取らざるを得ません。sips の価値は100分の1に縮小されました。

このバージョンの pict 不具合とその対処については本稿の最後に章を設けています。

-o の扱い

オプション -o は out の略ではありません。optimizeColorForSharing です。共有のための色調整?よく判りませんが、実行してみたら僅かに色が変わりました。

出力を指定するには、–out <出力パス> と書きます。

10.15 Catalina の sips 294

このバージョンでは pict ファイルが扱えないバグが修正されています。それだけでも価値ありますが、このもっと後のバージョンでは javascript と連携できるようなので、出来る奴にとってはそっちのほうが価値あるかもしれません。

-o は out の略

このバージョンでは optimizeColorForSharing が消え失せ、-o が –out と同じ命令となります。大変紛らわしい変更が行われましたね。

あと、バージョンを調べるには -v または –version となります。そして、このバージョンでは –formats が使えるようになっています。

–formats

294 では –formats オプションが使用できます。sips が対応するファイルタイプが網羅され、書き込み可能かどうかも見分けられます。

sips --formats

バージョン 294 では以下のタイプが網羅されます。Writable とあるのが、書き込み可能なタイプです。

-------------------------------------------
com.adobe.pdf	pdf	Writable
com.adobe.photoshop-image	psd	Writable
com.adobe.raw-image	dng
com.apple.atx	--	Writable
com.apple.icns	icns	Writable
com.apple.pict	pict
com.canon.cr2-raw-image	cr2
com.canon.cr3-raw-image	cr3
com.canon.crw-raw-image	crw
com.canon.tif-raw-image	--
com.compuserve.gif	gif	Writable
com.dxo.raw-image	dxo
com.epson.raw-image	erf
com.fuji.raw-image	raf
com.hasselblad.3fr-raw-image	3fr
com.hasselblad.fff-raw-image	fff
com.ilm.openexr-image	exr	Writable
com.kodak.raw-image	dcr
com.konicaminolta.raw-image	mrw
com.leafamerica.raw-image	mos
com.leica.raw-image	raw
com.leica.rwl-raw-image	rwl
com.microsoft.bmp	bmp	Writable
com.microsoft.cur	--
com.microsoft.dds	dds	Writable
com.microsoft.ico	ico	Writable
com.nikon.nrw-raw-image	nrw
com.nikon.raw-image	nef
com.olympus.or-raw-image	orf
com.olympus.raw-image	orf
com.olympus.sr-raw-image	orf
com.panasonic.raw-image	raw
com.panasonic.rw2-raw-image	rw2
com.pentax.raw-image	pef
com.phaseone.raw-image	iiq
com.samsung.raw-image	srw
com.sgi.sgi-image	sgi
com.sony.arw-raw-image	arw
com.sony.raw-image	srf
com.sony.sr2-raw-image	sr2
com.truevision.tga-image	tga	Writable
org.khronos.astc	astc	Writable
org.khronos.ktx	ktx	Writable
public.avci	avci
public.heic	heic	Writable
public.heics	heics	Writable
public.heif	heif
public.jpeg	jpeg	Writable
public.jpeg-2000	jp2	Writable
public.mpo-image	mpo
public.pbm	pbm	Writable
public.png	png	Writable
public.pvr	pvr	Writable
public.radiance	pic
public.tiff	tiff	Writable

[巻末付録] version 10.4.4 の PICTファイル不具合

Mojave の sips 10.4.4 は、ファイル変換に期待して pict ファイル を扱おうとしても、エラーで出来ません。

Segmentation fault: 11

または

Error: Error querying file

こうなります。

pict 非対応のようです。そうでなければプログラムの不出来・不具合です。man で確認すると対応するタイプにまだ載っています。

jpeg | tiff | png | gif | jp2 | pict | bmp | qtif | psd | sgi | tga

対応できそうなことを書いていますが対応してないですよ。このリストの他にも対応しているタイプはあるし、リストに載っていてもpictファイルは扱えません。このリストの意味は何?

プレビューで試す

sipsは プレビュー.app で使われているらしいので、プレビュー.app で開いてみましょうか。

開きました。確かに pict ファイルを開けます。

 pict画像  

ではファイル変換・・・別名保存で書き出してみましょうか。

書き出しダイアログでのファイルタイプ指定
ファイルタイプがPDFしか選べない!

 

書き出せるタイプがPDFのみ

ファイルタイプが選択肢に何も出てきません。唯一PDFには変換できるようです。つまり、これがすべてですね。pict ファイルは他のタイプに変換できなくなりました。

これが sips で Segmentation fault: 11 エラーとなる原因なのかもしれません。

プレビュー.app で一旦PDFに書き出し、それを開いて別形式に書き出せるのか見てみました。

PDFに変換してプレビュー.appで開いた
PDFに書き出して開いた

一旦、PDFに書き出して開き、もう一度別名保存します。

PDFから書き出せるタイプ
PDFから書き出せるタイプ

 

今度は選択肢にタイプがいくつも出てきました。

一旦PDFに変換してからだと jpeg や png に変換できることが判りました。なるほどわかった。じゃあ sips で同じことをやってみましょう。

一旦PDFにしてから・・

sips -s format pdf <pict> --out <pdf>

と、思ったらここでいきなりエラー。

Segmentation fault: 11

駄目じゃん。

これはどういうこと?プレビュー.app の別名保存ではできるのに sips ではエラー。謎が深まります。プレビュー.app の別名保存は sips の性能とは関係ないらしい。

この後、何とかして pict ファイルを変換しようと苦戦しましたが、sips では何をやってもエラーにしかなりませんでした。

sips の限界

これが sips の限界です。小気味よくて万能感ありましたが、やはりただのApple製、互換性の高さという言葉はAppleの辞書にはありません。

FFmpeg でやってみよう

ファイルタイプの変換を目指しているので頼りない sips を無視して他の方法はないかとしばし考え、FFmpeg を使ってみるテストを行うことにしました。

FFmpeg はビデオやオーディオファイルを扱うツールですが、対応タイプの幅の広さがずば抜けています。pict ファイルも扱えるかもしれません。

ffmpeg -i '<入力pict>' -y '<出力png>'

オプションの -y は確認せずに上書きします。

ラスタ画像しかも PICT ファイルでこのコマンドが有効でしょうか。早速試してみますと・・・

できた!

FFmpeg、なんて有能なのでありましょうか。ファイルタイプの変換には、中途半端に sips なんか使うより遙かに優秀な ffmpeg を使うのが良いという結論になってしまいました。

 

コメント

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください