SIPS コマンド - 画像をコマンドラインで - その1 (リサイズ / 回転 / 反転 など)

《元画像ファイルについて》

ファイル名:Original_Img.jpgサイズ:768 x 336

《準備》

ターミナルを立ち上げて、作業フォルダにCDしておくPathに日本語とか入っちゃってる場合、うざいので、ターミナルで、

cd
とだけ打って*2、Finderで、当該フォルダをとっつかまえて、ターミナルのウィンドウに持ってくれば、Pathごと自動的に入力されるというのは、皆さんご存じのTIPS。

《変形(アスペクト比も変わる)》

縦横比も変わるような変形には、-z オプション、もしくは、----resampleHeightWidth オプションを使用します。※ピクセル数は縦・横の順で指定※下記の 例 1 も 例 2 も同じ出力が得られます。

例 1) 横300ピクセル、縦を450ピクセルにする(-z)元画像ファイル:Original_Img.jpg元画像サイズ:768 x 336

sips -z 450 300 Original_Img.jpg --out 1.jpg
出力画像ファイル:1.jpg出力サイズ:300 x 450

例 2) 横300ピクセル、縦を450ピクセルにする(----resampleHeightWidth)元画像ファイル:Original_Img.jpg元画像サイズ:768 x 336

sips --resampleHeightWidth 450 300 --out 2.jpg Original_Img.jpg
出力画像ファイル:2.jpg出力サイズ:300 x 450

《アスペクト比は同一の縮小・拡大(一辺が ○○ px の正方形に fit するように)》

縦横比のキープした変形には、-Z オプション、もしくは、--resampleHeightWidthMax オプションを使用します。※サイズ指定の引数はひとつ(縦横指定ではない)

例 3) 一辺が 400px の正方形に fit するように、アスペクト比を変えずに、拡大・縮小します元画像ファイル:Original_Img.jpg元画像サイズ:768 x 336

sips -Z 400 Original_Img.jpg --out 3.jpg
出力画像ファイル:3.jpg出力サイズ:400 x 175

ところが…

ところが、これだと、以下のような場合、問題がおきます。

例 4) 横幅を 400 px にそろえたくて、画像が縦長の場合元画像ファイル:Tatenaga.jpg元画像サイズ:200 x 455

sips -Z 400 Tatenaga.jpg --out 4.jpg

出力画像ファイル:4.jpg出力サイズ:176 x 400

例 5) 縦の高さを 400 px にそろえたくて、画像が横長の場合元画像ファイル:Yokonaga.jpg元画像サイズ:600 x 300


sips -Z 400 Yokonaga.jpg --out 5.jpg
出力画像ファイル:5.jpg出力サイズ:400 x 200
例 4 では、横幅ではなく、縦の高さが 400 px になってしまい、肝心の横幅は、176 px ですし、例 5 では、縦の高さではなく、横幅が 400 px になってしまい、肝心の縦の高さは、200 px です。私の場合も最終的には、「フォルダ内の画像ファイル全てを対象に、一括して横幅を統一した画像に変換をしたい」ので、これではうまくないわけです。つまり、上記の 例 4 や 例 5 が混在するフォルダに対して、-Z オプションでは、具合が悪いわけです。

《アスペクト比は同一の縮小・拡大(横幅指定 / 縦幅指定)》

直接、横幅や高さを明示的に指定して、かつ、縦横比を変えないで、変換するオプションってないの?ヘルプ出してみるべ。

sips --help

ありました。この記事の最初に「縦横比も変わる変形オプション」として説明した-z オプションと同列のところにあったので、見逃すところでした。明示的に横幅を指定して、縦横比を変えないためには、--resampleWidthを、未自適に高さを指定して、縦横比を変えないためには、--resampleHeightを使えばいいようです。

例 6) 横幅を 400 px にして、かつ、アスペクト比を変えずに、拡大・縮小します元画像ファイル:Tatenaga.jpg元画像サイズ:200 x 455

sips --resampleWidth 400 Tatenaga.jpg --out 6.jpg

出力画像ファイル:6.jpg出力サイズ:400 x 910

例 7) 高さを 400 px にして、かつ、アスペクト比を変えずに、拡大・縮小します元画像ファイル:Yokonaga.jpg元画像サイズ:600 x 300

sips --resampleHeight 400 Yokonaga.jpg --out 7.jpg
出力画像ファイル:7.jpg出力サイズ:800 x 600

《その他:Rotate / Flip / Crop / Pad 》

回転させる / 水平(垂直)反転 / (画像中央からの)切り抜き などができます。ま、このあたりは、間違えようがないでしょ。

例 8) 時計回りに45度回転させます元画像ファイル:Original_Img.jpg元画像サイズ:768 x 336

sips -r 45 Original_Img.jpg --out 8.jpg
出力画像ファイル:8.jpg出力サイズ:780 x 780

例 9) 水平に左右を反転させます(鏡に映った感じ)元画像ファイル:Original_Img.jpg元画像サイズ:768 x 336

sips -f horizontal Original_Img.jpg --out 9.jpg

出力画像ファイル:9.jpg出力サイズ:768 x 336

例 10) 垂直に上下を反転させます元画像ファイル:Original_Img.jpg元画像サイズ:768 x 336

sips -f vertical Original_Img.jpg --out 10.jpg
出力画像ファイル:10.jpg

Crop と Pad

これには、-c オプションでも、-p オプションでもどちらでも同じのようです。cropとpadですから、切り出しと余白とでもなるのでしょうか。*3しかし、結果に違いは見つけられませんでした。以下の例では、cropの方を使っています。

例 11) 200 x 300 の画角で、中心から、元画像を切り出します。※ 指定画角サイズが、元画像より小さい場合:元画像を中心から指定画角分切り出します元画像ファイル:Original_Img.jpg元画像サイズ:768 x 336

sips -c 300 200 Original_Img.jpg --out 11.jpg

出力画像ファイル:11.jpg出力サイズ:200 x 300

例 12) 400 x 800 のキャンバスの中心に、元画像を貼り付けたようにします※ 指定画角サイズが、元画像より大きい場合:黒いキャンバスの中心に元画像を貼り付けた感じになります。 今回の元ファイルの例ですと、横がキャンバスより長く、縦がキャンバスより短いので、 結果としては、元ファイルの左右は切り捨てられ、上下には、黒いキャンバスが見えるということになります。 ところで、キャンバスの色ですが、黒は白とかにならないのかなぁ。ご存じの方、教えて下さい。 > えらいひと元画像ファイル:Original_Img.jpg元画像サイズ:768 x 336

sips -c 800 400 Original_Img.jpg --out 12.jpg
出力画像ファイル:12.jpg
  • 注1Exif 情報なんかもいじれるみたい。
  • 注2cdのあとのスペース忘れずに…
  • 注3結果は、余白ではなく余黒っぽい状況になりましたw

0コメント

  • 1000 / 1000