sipsコマンドは使えるかも
印刷屋としては、画像処理は避けて通れない道だったりします。
最近は何でもアプリケーションサーバで処理する傾向があって、ファイル容量も大きなものを扱う必要があったりなど、ちょっと悩みの種でもあります。
今の所、Javaの Java Image I/O API を使っていますが、Javaでデカイ画像を扱うのは勇気がいります。それに、CMYKの扱いが今ひとつだったりしますし。
Photoshopを使えば簡単にできるような処理も、サーバ上でそれをやる訳にも行かず︵やって出来ない事は無いだろうけど・・︶、どうしたものかと考えておりました。
そこで、せっかく画像処理に強いと言われる︵笑︶Mac OSX を運用プラットフォームにしている強みを生かして、何か簡単で良い方法が無いかと調べていた所・・・やっぱりありました。
sipsコマンドです。なんだ、Pantherからあったのか。知らんかった︵笑︶
sipsコマンドです。なんだ、Pantherからあったのか。知らんかった︵笑︶
sipsで出来る事
このページ︵http://developer.apple.com/jp/technotes/tn2035.html︶に日本語の解説が載っていました。
●各種ラスタイメージ形式の読み書きと変換
●jpeg︵Jfif および Xiff︶、GIF、PNG
●基本的画像処理
●回転、反転、切り取り、パディング、再サンプリング、解像度変更
●カラーマネージメント操作
●プロファイルの埋め込み、抽出、調整
●既知のメタデータタグの読み書き
●可能な限りのオリジナルコンテンツの維持
印刷屋的には、おそらく一番最後の﹁可能な限りのオリジナルコンテンツの維持﹂ってのが重要な気がします。
これから書く事は、実は2003年12月のこの記事︵http://journal.mycom.co.jp/column/osx/073/︶と、ほとんどかぶってしまう事が判明しましたが、個人的なテストの結果としてメモしておきます。
画像のプロパティを取得する
- 取れるだけ取ってくる
- sips -g all imageFile
$ sips -g all test.jpg /test.jpg pixelWidth: 3136 pixelHeight: 2352 typeIdentifier: public.jpeg format: jpeg formatOptions: default dpiWidth: 314.000 dpiHeight: 314.000 samplesPerPixel: 3 bitsPerSample: 8 hasAlpha: no space: RGB creation: 2006:01:09 11:49:37 make: OLYMPUS IMAGING CORP. model: E-330 software: Version 1.0 description: OLYMPUS DIGITAL CAMERA 縦横のピクセル数、解像度、カラースペースはもとより、メタデータのたぐいも拾って来れますね。 ピクセル数を取ってくる sips -g pixelHeight -g pixelWidth imageFile $ sips -g pixelHeight -g pixelWidth test.jpg /test.jpg pixelHeight: 2352 pixelWidth: 3136 不要な情報がいらない場合は、-gオプションに欲しいプロパティ名をつければOKです。 複数画像のプロパティを取ってくる sips -g propertyName imageFile1 imageFile2... $ sips -g pixelHeight -g pixelWidth test.jpg test2.jpg /test.jpg pixelHeight: 2352 pixelWidth: 3136 /test2.jpg pixelHeight: 2304 pixelWidth: 1736 もちろん、ファイル名はワイルドカードでもOKです。例えばJPEGのみの場合は、*.jpgなどとします。
画像のフォーマットを変更する
$ sips -s format tiff --out out.tiff test.jpg /test.jpg /out.tiff 画像のフォーマットは、jpeg、tiff、png、gif、jp2、pict、bmp、qtif、psdとなっています。 ちなみに、TIFF変換した画像のプロパティを見てみると、ちゃんと﹁可能な限りのオリジナルコンテンツの維持﹂ってのが果たされているのが分かります。 $ sips -g all out.tiff /out.tiff pixelWidth: 3136 pixelHeight: 2352 typeIdentifier: public.tiff format: tiff formatOptions: default dpiWidth: 314.000 dpiHeight: 314.000 samplesPerPixel: 3 bitsPerSample: 8 hasAlpha: no space: RGB creation: 2006:01:09 11:49:37 make: OLYMPUS IMAGING CORP. model: E-330 software: Version 1.0 description: OLYMPUS DIGITAL CAMERA JPEG画像の品質を指定して保存する sips -s format jpeg -s formatOptions default | [low|normal|high|best|] |packbits --out outIma ge imageFile $ sips -s format jpeg -s formatOptions low --out outImage test.jpg /test.jpg /out.jpg formatOptionは直接パーセント指定も出来るようです。 $ sips -s format jpeg -s formatOptions 50 --out outImage test.jpg /test.jpg /out.jpg
画像をリサイズする
$ sips --resampleWidth 300 --out out.jpg test.jpg /test.jpg /out.jpg このリサイズは、縦横比を維持したまま、幅を300ピクセルにリサンプルします。また、高さの指定は --resampleHeight になります。 幅を300ピクセル、高さを200ピクセルにする︵変形︶ sips -resampleHeightWidth height width --out outImage imageFile $ sips --resampleHeightWidth 300 200 --out out.jpg test.jpg /test.jpg /out.jpg 縦横比を変更したい場合はこのオプションを使います。 縦横比を変えずに、最大ピクセル数を100とする sips --resampleHeightWidthMax 100 --out outImage imageFile $ sips --resampleHeightWidthMax 100 --out out.jpg test.jpg /test.jpg /out.jpg 結構使えるオプションかも知れません。DTP系の言葉で言えば︵?︶縦横100ピクセルのボックスにフィットするように画像を縮小する言えばよいでしょうか。 ちなみに、これらのコマンドは実際の画像のピクセル数が指定より小さい場合、逆に拡大されてしまうので要注意です。