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

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

Original_Img.jpg

ファイル名:Original_Img.jpg

サイズ:768 x 336

《準備》

ターミナルを立ち上げて、作業フォルダにCDしておく

Pathに日本語とか入っちゃってる場合、うざいので、ターミナルで、

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

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

縦横比も変わるような変形には、-z オプション、もしくは、—-resampleHeightWidth オプションを使用します。※ピクセル数は縦・横の順で指定

※下記の 例 1 も 例 2 も同じ出力が得られます。


例 1) 横300ピクセル、縦を450ピクセルにする(-z)

元画像ファイル:Original_Img.jpg

元画像サイズ:768 x 336

 

変形1

出力画像ファイル:1.jpg

出力サイズ:300 x 450


例 2) 横300ピクセル、縦を450ピクセルにする(—-resampleHeightWidth)

元画像ファイル:Original_Img.jpg

元画像サイズ:768 x 336

 

変形2

出力画像ファイル:2.jpg

出力サイズ:300 x 450

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

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

例 3) 一辺が 400px の正方形に fit するように、アスペクト比を変えずに、拡大・縮小します

元画像ファイル:Original_Img.jpg

元画像サイズ:768 x 336

 

拡大・縮小1

出力画像ファイル:3.jpg

出力サイズ:400 x 175

ところが…

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

例 4) 横幅を 400 px にそろえたくて、画像が縦長の場合

元画像ファイル:Tatenaga.jpg

元画像サイズ:200 x 455

拡大・縮小 失敗1

出力画像ファイル:4.jpg

出力サイズ:176 x 400


例 5) 縦の高さを 400 px にそろえたくて、画像が横長の場合

元画像ファイル:Yokonaga.jpg

元画像サイズ:600 x 300

拡大・縮小 失敗2

出力画像ファイル:5.jpg

出力サイズ:400 x 200

例 4 では、横幅ではなく、縦の高さが 400 px になってしまい、肝心の横幅は、176 px ですし、例 5 では、縦の高さではなく、横幅が 400 px になってしまい、肝心の縦の高さは、200 px です。

私の場合も最終的には、「フォルダ内の画像ファイル全てを対象に、一括して横幅を統一した画像に変換をしたい」ので、これではうまくないわけです。

つまり、上記の 例 4 や 例 5 が混在するフォルダに対して、-Z オプションでは、具合が悪いわけです。

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

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

ありました。

この記事の最初に「縦横比も変わる変形オプション」として説明した-z オプションと同列のところにあったので、見逃すところでした。

明示的に横幅を指定して、縦横比を変えないためには、–resampleWidthを、

未自適に高さを指定して、縦横比を変えないためには、–resampleHeightを使えばいいようです。


例 6) 横幅を 400 px にして、かつ、アスペクト比を変えずに、拡大・縮小します

元画像ファイル:Tatenaga.jpg

元画像サイズ:200 x 455

出力画像ファイル:6.jpg

出力サイズ:400 x 910


例 7) 高さを 400 px にして、かつ、アスペクト比を変えずに、拡大・縮小します

元画像ファイル:Yokonaga.jpg

元画像サイズ:600 x 300

出力画像ファイル:7.jpg

出力サイズ:800 x 600

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

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

例 8) 時計回りに45度回転させます

元画像ファイル:Original_Img.jpg

元画像サイズ:768 x 336

 

出力画像ファイル:8.jpg

出力サイズ:780 x 780


例 9) 水平に左右を反転させます(鏡に映った感じ)

元画像ファイル:Original_Img.jpg

元画像サイズ:768 x 336

 

出力画像ファイル:9.jpg

出力サイズ:768 x 336


例 10) 垂直に上下を反転させます

元画像ファイル:Original_Img.jpg

元画像サイズ:768 x 336

 

出力画像ファイル:10.jpg

Crop と Pad

これには、-c オプションでも、-p オプションでもどちらでも同じのようです。cropとpadですから、切り出しと余白とでもなるのでしょうか。*3

しかし、結果に違いは見つけられませんでした。

以下の例では、cropの方を使っています。


例 11) 200 x 300 の画角で、中心から、元画像を切り出します。

※ 指定画角サイズが、元画像より小さい場合:元画像を中心から指定画角分切り出します

元画像ファイル:Original_Img.jpg

元画像サイズ:768 x 336

 

crop1

出力画像ファイル:11.jpg

出力サイズ:200 x 300


例 12) 400 x 800 のキャンバスの中心に、元画像を貼り付けたようにします

※ 指定画角サイズが、元画像より大きい場合:黒いキャンバスの中心に元画像を貼り付けた感じになります。

今回の元ファイルの例ですと、横がキャンバスより長く、縦がキャンバスより短いので、

結果としては、元ファイルの左右は切り捨てられ、上下には、黒いキャンバスが見えるということになります。

ところで、キャンバスの色ですが、黒は白とかにならないのかなぁ。ご存じの方、教えて下さい。 > えらいひと

元画像ファイル:Original_Img.jpg

元画像サイズ:768 x 336

 

出力画像ファイル:12.jpg

    • 注1Exif 情報なんかもいじれるみたい。

    • 注2cdのあとのスペース忘れずに…

  • 注3結果は、余白ではなく余黒っぽい状況になりましたw

コメント

  1. TECH Matari より:

    [画像変換]sips(Mac) vs GD(PHP) ベンチマーク

    phpで画像処理する定番といえば、組み込みのGD(PHP: GD – Manual)が定番なのだけれど、どうも処理もとの画像のファイルサイズが大きくなると、処理が遅い。
    とある画像データベースサイトでは、デジカメで撮影した画像を大量にアップロード・リサイズする必要があり、GDで…

  2. 高橋 より:

    こんにちは&はじめまして

    もうとっくにご存知かもしれませんが、「キャンバスの色」の件、最近試してみて気がついたので、一応メモさせてください。
    http://ss64.com/osx/sips.html

    –padColor hexcolor
    にて背景色が帰られました。
    –padColor FFFFFF
    とすると白になりました。

  3. bison より:

    情報ありがとうございます!
    –padColor hexcolor
    ですね!

  4. […] 前回《SIPS コマンド – 画像をコマンドラインで – その1 (リサイズ / 回転 / 反転 など)》で、SIPS コマンドの基本的な使い方を書きました。 さてさて… 現実にSIPSコマンドを使 […]

タイトルとURLをコピーしました