2009-11-27

『クズが世界を豊かにする』におけるYouTubeの画面キャプチャ大量貼り込み大作戦 

松沢呉一さんの新刊『クズが世界を豊かにする』では、YouTubeの動画の例が75本取り上げられていて、それぞれの動画の画面を図版として載せています。
1本の動画につき、1〜4画面のサンプルがあり、画像の総数は、200枚超。

定型のレイアウトですが、貼り込み作業は大変そうということで、大量画像取り込み大作戦です。

まずは『落語を観るならこのDVD』で覚えたてのXML読み込みで貼り込み作業を半自動化。

画像をIndesignファイルと同一階層のLinksフォルダにまとめて、

<?xml version=”1.0″ encoding=”UTF-8″?>
<Root>
<gazo href=”file://./Links/001.eps”/>
<gazo href=”file://./Links/002.eps”/>
<gazo href=”file://./Links/003.eps”/>
  :
  :
  :
</Root>

という具合にテキストを準備して、Indesignで読み込ませると、
対応する画像フレームに画像を配置してくれます。

が、画像を貼り込む際の画像の拡大が指定できません。
問答無用で100%の比率で貼り込まれます。
一見真っ黒ですがこれでも画像は配置されているのです。

before.png

フレームの縦横比はYouTubeの動画の比率にあわせてつくっているので、
「オブジェクトメニュー」>「オブジェクトサイズの調整」>「内容をフレーム内に収める」
でOKなのですが、正直200回やるのは結構めんどい。。ということで、

組版時間を半減する! InDesign自動処理実例集を参考にjavascriptを書いてみました。

●ドキュメント上の全ページの全部の画像フレームの画像に
「内容をフレーム内に収める」をかける。

var pageObj = app.activeDocument.pages;
//アクティブなドキュメント内のページを対象にする
for (n=0; n<pageObj.length; n++) {
//1ページずつページ数分だけ繰り返し
  for (var i=0; i<pageObj[n].allPageItems.length; i++) {
//ページ上のオブジェクト数の分だけ繰り返す
    if (pageObj[n].allPageItems[i].contentType == ContentType.graphicType) {
//もし、オブジェクトの属性がグラフィックだったら
      pageObj[n].allPageItems[i].fit(FitOptions.proportionally);
//内容をフレームに収める
    }
  }
}

残念なことに、
トリミングして使いたい画像も、もれなくフィットしてしまいます。
ほかにも、ブジェクトの属性がグラフィックだけど画像が入ってないとかが
あるとエラった気がしました。

真っ黒に見えた画像もFitしてキャプチャらしくなりました。
やったね。

after.png

というふうにしてサンプル画像の貼り込み作業を終えました。
調べる時間も含めたら、人海戦術と比べてどれほどはやいかというと
それほどはやくもなかったかもしれませんが。。