WEB制作やブログなどで使う場合に、写真をたくさんリサイズしなきゃいけないことがある。PhotoshopやGraphicConverterでやってもいいんだけど、ブログなどいつも使うサイズが決まっているならAutomatorで、ちゃっちゃと済ませたい。と思ってはじめたら意外にハマった。
AutomatorのScale Imagesは、
長辺を指定サイズにすることしかできない。
Automatorは、いろんな作業を積み木的に自動化してくれる便利な小物、しかもあらかじめ入っているいいやつだ。で、起動したら、右クリックが好きなら、サービスを新規作成、メニューバーから選びたいなら、ワークフローを新規作成だ。
例えば、選んだフィアルを、リサイズフォルダにコピーしてサイズを変更、でもファイル名は同じまま。その場合は、左にあるライブラリから、「選択されたFinder項目を取得」を選んで右にドロップ、次に「Finder項目をコピー」を同様にドロップして保存先をお好きな場所に。最後に、「イメージをサイズ調整」でいいはずなんだけど、これタコなことに、長辺の長さかパーセント指定しかできない。要するに横幅を250pxに統一したいという細やかな願いを実現できない。
で、困ったらターミナル様にすがるってことで、左から「シェルスクリプトを実行」をドロップ。シェルはそのまま「/bin/bash」、入力の引き渡し方法は「引数として」を選ぶ。
その下に、resampleWidth 300の300の部分をお好きなサイズに変更して、以下を入れれば大丈夫なはずだった。
for f in "$@" do sips --resampleWidth 300 "$f" done
これで、基本問題ないはずなんだけど、iPhoneで撮影した写真をリサイズしようとしてハマった。
ヨコ幅を指定しているのに、タテが指定サイズにリサイズされる。
ほとんどの写真は問題なくリサイズされるが、タテ位置の写真の一部がなぜかタテ方向が指定サイズにリサイズされてしまう。これでは長辺を指定サイズにするのと一緒、ダメじゃん。ダメなのはiPhoneで撮った写真の一部、で調べた。
iPhoneの写真は全部ヨコ位置(ナガ)、
それを回転させてタテ表示している。
iPhoneの写真は、iPhoneで見ても、OSXのプレビューなどで見ても、タテ位置で撮った写真はタテに表示される。上下逆になったり、タテなのにヨコで表示されたりしない。自然なので気にしてなかったけど、実現するためには、撮影時のカメラ(iPhone)の姿勢情報を写真が持っていないといけない。で、実際にプレビューで写真の情報をみると、
左は、iPhoneから写真をメールで送ったもの、右は同じ写真をiCloud経由でApetureで開いて書きだしたもの。左は横長の写真を反時計周りに回転させて表示させていることがわかる。見た目は縦長だけど、データとしてはあくまで横長ということで、横方向の長さを指定してリサイズしてもダメってこと。この画像方向(EXIFのOrientation)情報は、どうやらアプリケーションによって扱いが違うらしい。さらに、このタイプの写真をブログにアップロードすると、ヨコ倒しになってしまう。これも同じ原因。
で、どうすればいいか実験してみた。プレビューからでもApertureからでも、書き出せば画像情報は1に設定され、見た目とデータ上のタテヨコが一致する。Automatorの場合、お気楽なのは「イメージのタイプを変更」でpngにしてしまうこと。ただし、pngにしたからといって、iPhoneで撮影した写真のexif情報、特にGPS情報とかなくならないので、要注意。
で、最終的に、「選択されたFinder項目を取得」して「Finder項目をコピー」「イメージのタイプを変更」「シェルスクリプトを実行」で、選んだファイルを一括して横幅xxxにリサイズできた。