InDesign:画像置換スクリプト

InDesignCS2以降
CSはShift-JIS対応がうざいので未対応。
ファイル名やディレクトリ名を1バイトで整えると動作する可能性はなくないです。

概要
元は1つの画像データから派生したアタリ画像(プレビュー用画像)を実画像に置換するスクリプト。
 「差し替えごっこ」と違うのは絵柄主体ではなく画像サイズ主体で動作する事。
  「標準機能で置換するとぶっきらぼうに処理されてしまうケース」をフォローします。
I.F.A.* やID_adjust*と併行利用することにより、画像差し替え作業が大幅に時間短縮できるといいよなあ。
 I.F.A.やID_adjust ……追って公開。

大まか使用手順
 アタリ画像を選択します。
  スクリプトを実行します。



ダイアログが開きます。 置換する画像を選択して続行します。
 画像では某ソフトのせいでダイアログが多少にぎやかになってます。



内部でこねくり回されたあと、最後に元のアタリ画像をペーストしてスクリプトが終了します。
 パッと見、実行前と変わらないわけです。



そこから undo(Command+Z)すると、実画像が同じ位置に現れます。
 これで作業完了です。




画像を差し替える際、どうしても最後は人の目で「元画像との重ね確認」が必要になります。
 どこの馬の骨がこしらえたかわからない怪しいスクリプトに頼ってみたら尚のことです。
  具体的には、ケス、モドス、ケス、モドス、とかチャカチャカやったりするわけで。
これを「スクリプト実行、undo一発」で1セットとする事により、手数を最小限に停める事ができたと思っております。
 思ってるだけですけど。

内部の情報
 元画像の幅、高さ、回転角、左上座標を記憶し、
実画像を配置後、同じ幅、高さ、回転角になるようにしています。
 それだけです。
  が、
どちらか一方だけが90度回転していた場合、及び180度回転していた場合、
 置換した直後にペーストボードからはみ出てしまうエラー、
  などをちょこちょことセコく回避しております。

180度回転の場合、あらかじめこれを想定して実画像に180度回転を2回、与えているので、
 スクリプト実行後、一度のundoで「おや」と思ったらそのままもう一度undo。



これだけでOKです。



90度回転の場合、スクリプト実行中に縦長か横長かを検出しています。互いに食い違う場合、
90度回転に対応、これも180度回転を与えた後にアタリ画像をペーストして終了するので、
右回転、左回転どちらでも、一度目か二度目のundoでカチ合うはずです。


ファイルパス(フォルダ名、ファイル名)の問題
 CS3で、ダイアログで選択した画像のファイル名、及び内包するフォルダ名に
  全角のカッコやスペースが含まれていると正しく認識せずエラーとなります
   エラー表示後は実行前に戻します。


この場合はファイルパスを修正するか(現実的ではありませんが)、
 実画像の一時的な格納場所として1バイト文字のみでファイルパスが参照できるディレクトリを用意するか、
または同梱の ImageRepCS3.jsx を使用して下さい。
 こちらはファイル選択ダイアログがInDesignのメニューアクション「配置…」をそのまま利用した物です。
  ファイルパスの問題はこれで解決しますが、以下の問題を孕んでいます。
●一部のマシンでは動作しない(手元の環境ではG5でダメでした)
●ダイアログ内で元画像の名前を参照できない(それほど問題でもない)
  元々CS3以降で使わせる予定だったものの、CS2でまんまと動作してしまったので、
対応表を作成しました(逃げてるわけ)。



 どうか歩み寄って使ってみてくれるといいですねえ。

3 thoughts on “InDesign:画像置換スクリプト

  1. ファイルパス(フォルダ名、ファイル名)の問題
    解決じゃねぇ
    var my_AppleScript = ‘POSIX path of (choose folder name with prompt (“画像が入ったフォルダを選択してください”)) as unicode text’;
    var newpath = app.doScript (my_AppleScript, ScriptLanguage.APPLESCRIPT_LANGUAGE);
    var myFolder = new Folder (newpath);

  2. あああ、ご教示ありがとうございます! 学習させて頂きました。
    choose file with prompt 〜と応用してきっぱり解決できました。
    すごいです! すごくすごい!
    doScriptオブジェクトをAppleScriptでしか見た事がなくて、JavaScriptでも使えるとは気付きませんでした
    (気付いていてもASわからないのがみっともないのですが)
    さっそく手持ちの色々に組み込ませていただきます。
    大変有益な情報、本当に感謝致します。しかもタダで!
    が、エアコン昇天の影響でメインマシンが熱中症にかかり、DL用ファイルの更新は少し遅れます orz

  3. 採用ありがとうございます。
    一つ問題としてはてゆうか、欲としては
    選択ダイアログ時にレインボーが回るのが
    ちょっと気になりますが
    楽ですよ

コメントを残す

メールアドレスが公開されることはありません。

*