AppleScriptを使って、Illustratorに貼られた画像の拡大縮小率を得るには

この記事はあかねによって執筆されました。
公開日:2008年3月 3日、更新日:2014年3月 6日

ある掲示板に「Illustratorに張られている画像の縮小拡大率をAppleScriptで得るにはどうしたらいいのでしょうか?」という質問が書き込まれていた。

私がみたときはすでにその質問にはほかの方によって回答されていて、問題は解決済みだったのだけど、以前私も同じ問題でつまずいたことがあり、これに引っかかる人は結構多いのかもしれない。

何かの参考になるかもしれないので、私が引っかかったときの経緯と解決方法を記事にしておこうと思う。

あらかじめ申し上げると、私はこの問題の数学的な解決法の部分についてはすべて人から教えてもらった(感謝)。が、私自身は数学はおろか算数ですらおぼつかないレベルであるため、教えていただいた数式について「どうしてそうなるのか」はまったく理解していない(笑)なので、この件について「もっと(数学的に)詳しい説明を!」などと求めないでほしい。

AppleScriptを使って、Illustratorに貼られた画像の拡大縮小率を得るにはどうしたらいいのか?

まずサイズの情報がどこにあるのか考える。サイズの情報は配置画像のpropertiesの中にありそうだ...が、配置画像のpropertiesにはhorizontal scaleといったようなそれらしい値がない。

唯一、サイズに関連しそうなのはMatrixという値。

--配置された画像のmatrixを得る 
tell application "Adobe Illustrator"
    get matrix of placed item 1 of layer 1 of document 1
end tell

ところがこれがくせ者で、例えば縦80%、横50%、回転-10度の縮小画像のMatrixを得ると、次のような値が返ってくる。

{class:matrix, mvalue_a:0.787846207619, mvalue_b:0.138918548822, mvalue_c:-0.086824089289, mvalue_d:0.492403864861, mvalue_tx:458.30810546875, mvalue_ty:376.57421875}

...なんじゃこりゃ。

Adobeのスクリプトマニュアルには 「変換マトリックスは、線形代数という分野から生まれた、数学的な概念です」とあるので、なにか計算すればここから倍率や回転度数を得られるのだろうけど、...難しい。

こりゃ私には無理だわと、お手上げ状態で頭をかかえてしまったのですが、親切な方から「これはアフィン変換ではないか」との助言とそこから倍率を得る公式を教えていただいた。

mvalue_aが「横方向倍率 × cosθ」 
mvalue_bが「横方向倍率 × sinθ」

(cosθ)^2 + (sinθ)^2 = 1

これをExcelの関数で計算すると

横方向倍率=SQRT((mvalue_a)^2+(mvalue_b)^2)

AppleScriptではExcelも制御できるので、この計算もExcelでやらせてもよいのだけれど、Mac OS XならPerlやRuby、JavaScriptを使った方が簡単。

例えばRubyでこの計算を行うと

horizontal_scale = Math.sqrt((mv_a.to_f**2) + (mv_b.to_f**2))##横方向倍率 
verticality_scale = Math.sqrt((mv_c.to_f**2) + (mv_d.to_f**2))##縦方向倍率

という感じになる。

これをAppleScriptと組み合わせると

--選択している配置画像の縮小率をとる
tell application "Adobe Illustrator"
    set Placed_Item to item 1 of selection

    set mv_a to mvalue_a of matrix of Placed_Item
    set mv_b to mvalue_b of matrix of Placed_Item
    set mv_c to mvalue_c of matrix of Placed_Item
    set mv_d to mvalue_d of matrix of Placed_Item

    do shell script "ruby   -e ' print Math.sqrt((ARGV[0].to_f**2) + (ARGV[1].to_f**2))' " & (mv_a & " " & mv_b)
    do shell script "ruby   -e ' print Math.sqrt((ARGV[0].to_f**2) + (ARGV[1].to_f**2))' " & (mv_c & " " & mv_d)
end tell

こんな感じ。

『10倍ラクするIllustrator仕事術』(増強改訂版[CS5/CS6/CC/CC 2014対応])

2014年10月に発売。新しいバージョンを使いながらも、古いやり方のまま作業されている中級以上のユーザー向けの書籍。ツールやコマンドなどの基本的な使い方の解説はありません。

2015年3月、8月に増刷。前書(2011年版)と合算すると3万部超のロングセラーとなっています。

改訂版に関する情報

2011年に発売した書籍の改訂版です。

  • 対応バージョンは、CS5/CS5.1/CS6/CC/CC 2014
  • 178ページから78ページ増量の256ページ
  • 金額は180円(だけ)アップの2,380円(税別)

最新版への対応

2016年11月リリースのIllustrator CC 2017への対応版を、2017年2月に発売します。なお、書籍リリース後の追加情報は、サポートページにて公開しています。

全都道府県縦断セミナーツアー

2014年10月に技術評論社から発売された『10倍ラクするIllustrator仕事術』(増強改訂版)のプロモーションのために、全国47都道県にて実施。

47都道府県すべての県での開催が終了しました。ご参加ありがとうございました!

『10倍ラクするIllustrator仕事術』改訂版

『10倍ラクするIllustrator仕事術』(増強改訂版)は、2011年発売の『10倍ラクするIllustrator仕事術』の改訂版。2014年に技術評論社から発売、現在5刷です。2011年版と合わせて35,000部のロングセラーとなっています。

詳しくはサポートサイトにて。

画像:『10倍ラクするIllustrator仕事術』改訂版

『10倍ラクするIllustrator仕事術』全都道府県縦断セミナーツアー、 47都道府県すべての県での開催が終了しました。ご参加ありがとうございました!

画像:『10倍ラクするIllustrator仕事術』改訂版

5つの「く」

画像:『10倍ラクするIllustrator仕事術』改訂版

DTP Transitのコアとなっている制作へ考え方「ムラなく、モレなく、直しに強く、手数を少なく、美しく」を5つの「く」としてまとめてみました。

オススメのスライド

お問い合わせ

メールマガジン

サイトの新着情報などを、月1回程度、メールマガジンでも配信しています(まぐまぐから配信。無料です)

オススメ記事

Illustrator

InDesign

Photoshop

その他

 

リンク

このページの上部に戻る