《元画像ファイルについて》
ファイル名:Original_Img.jpg
サイズ:768 x 336
《準備》
ターミナルを立ち上げて、作業フォルダにCDしておく
Pathに日本語とか入っちゃってる場合、うざいので、ターミナルで、
1 |
cd |
とだけ打って*2、Finderで、当該フォルダをとっつかまえて、ターミナルのウィンドウに持ってくれば、Pathごと自動的に入力されるというのは、皆さんご存じのTIPS。
《変形(アスペクト比も変わる)》
縦横比も変わるような変形には、-z オプション、もしくは、—-resampleHeightWidth オプションを使用します。※ピクセル数は縦・横の順で指定
※下記の 例 1 も 例 2 も同じ出力が得られます。
例 1) 横300ピクセル、縦を450ピクセルにする(-z)
元画像ファイル:Original_Img.jpg
元画像サイズ:768 x 336
1 |
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
1 |
sips --resampleHeightWidth 450 300 --out 2.jpg Original_Img.jpg |
出力画像ファイル:2.jpg
出力サイズ:300 x 450
《アスペクト比は同一の縮小・拡大(一辺が ○○ px の正方形に fit するように)》
例 3) 一辺が 400px の正方形に fit するように、アスペクト比を変えずに、拡大・縮小します
元画像ファイル:Original_Img.jpg
元画像サイズ:768 x 336
1 |
sips -Z 400 Original_Img.jpg --out 3.jpg |
出力画像ファイル:3.jpg
出力サイズ:400 x 175
ところが…
例 4) 横幅を 400 px にそろえたくて、画像が縦長の場合
元画像ファイル:Tatenaga.jpg
元画像サイズ:200 x 455
1 |
sips -Z 400 Tatenaga.jpg --out 4.jpg |
出力画像ファイル:4.jpg
出力サイズ:176 x 400
例 5) 縦の高さを 400 px にそろえたくて、画像が横長の場合
元画像ファイル:Yokonaga.jpg
元画像サイズ:600 x 300
1 |
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 オプションでは、具合が悪いわけです。
《アスペクト比は同一の縮小・拡大(横幅指定 / 縦幅指定)》
直接、横幅や高さを明示的に指定して、かつ、縦横比を変えないで、変換するオプションってないの?ヘルプ出してみるべ。
1 |
sips --help |
ありました。
この記事の最初に「縦横比も変わる変形オプション」として説明した-z オプションと同列のところにあったので、見逃すところでした。
明示的に横幅を指定して、縦横比を変えないためには、–resampleWidthを、
未自適に高さを指定して、縦横比を変えないためには、–resampleHeightを使えばいいようです。
例 6) 横幅を 400 px にして、かつ、アスペクト比を変えずに、拡大・縮小します
元画像ファイル:Tatenaga.jpg
元画像サイズ:200 x 455
1 |
sips --resampleWidth 400 Tatenaga.jpg --out 6.jpg |
出力画像ファイル:6.jpg
出力サイズ:400 x 910
例 7) 高さを 400 px にして、かつ、アスペクト比を変えずに、拡大・縮小します
元画像ファイル:Yokonaga.jpg
元画像サイズ:600 x 300
1 |
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
1 |
sips -r 45 Original_Img.jpg --out 8.jpg |
出力画像ファイル:8.jpg
出力サイズ:780 x 780
例 9) 水平に左右を反転させます(鏡に映った感じ)
元画像ファイル:Original_Img.jpg
元画像サイズ:768 x 336
1 |
sips -f horizontal Original_Img.jpg --out 9.jpg |
出力画像ファイル:9.jpg
出力サイズ:768 x 336
例 10) 垂直に上下を反転させます
元画像ファイル:Original_Img.jpg
元画像サイズ:768 x 336
1 |
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
1 |
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
1 |
<span style="color: #000000;">sips -c 800 400 Original_Img.jpg --out 12.jpg |
コメント
[画像変換]sips(Mac) vs GD(PHP) ベンチマーク
phpで画像処理する定番といえば、組み込みのGD(PHP: GD – Manual)が定番なのだけれど、どうも処理もとの画像のファイルサイズが大きくなると、処理が遅い。
とある画像データベースサイトでは、デジカメで撮影した画像を大量にアップロード・リサイズする必要があり、GDで…
こんにちは&はじめまして
もうとっくにご存知かもしれませんが、「キャンバスの色」の件、最近試してみて気がついたので、一応メモさせてください。
http://ss64.com/osx/sips.html
の
–padColor hexcolor
にて背景色が帰られました。
–padColor FFFFFF
とすると白になりました。
情報ありがとうございます!
–padColor hexcolor
ですね!
[…] 前回《SIPS コマンド – 画像をコマンドラインで – その1 (リサイズ / 回転 / 反転 など)》で、SIPS コマンドの基本的な使い方を書きました。 さてさて… 現実にSIPSコマンドを使 […]