4 返信 最新の回答 日時: Oct 15, 2009 4:47 PM ユーザー:pokt

    JavaScriptでPhotoshop以外の画像フレームに不透明度を設定する

    pokt

      スクリプトの初心者です。

       

      全頁に配置してある画像フレームの不透明度をスクリプトで一括で設定したいのですが、Photoshopが配置されているフレームのみ不透明度を設定しません。

      下記のようなスクリプトを試したのですが、成功しません。

       

      myGF = app.activeDocument.allGraphics;
      for (i=0; i<myGF.length; i++)
      {
      try{
      if (myGF[i].PhotoshopAttributes){
      myGF[i].opacity =50;
      }else{
      myGF[i].opacity =100;
      }
      }catch(e){}
      }
      }

       

      お分かりになる方、ご教授よろしくお願い申し上げます。

        • 1. Re: JavaScriptでPhotoshop以外の画像フレームに不透明度を設定する
          にゃす Level 1

          不完全ですが参考になれば。

          TIFF, EPS, PSD 以外のフレームに不透明度50%を設定します。

          必要に応じてグラフィックの形式は足したり引いたりしてください。

           

          [ Vista + CS4 ]

          var myGraphics = app.activeDocument.allGraphics;
          for(i=0; i<myGraphics.length; i++) {
          if( (myGraphics[i].imageTypeName != "TIFF") &&
            (myGraphics[i].imageTypeName != "EPS") &&
            (myGraphics[i].imageTypeName != "Photoshop")) {
            myGraphics[i].parent.transparencySettings.blendingSettings.opacity = 50;
          }
          }

           

          イラレEPSとPhotoshopEPSの区別はしていません。

          メタデータがあれば linkMetadata で取得できると思いますが、メタデータが無い場合の取得方法が?

          ファイルをリードして Creator を確認すればできそうな気もしますが、

          皆さんはどうやっているのでしょうか?

          • 2. Re: JavaScriptでPhotoshop以外の画像フレームに不透明度を設定する
            pokt Level 1

            おせわさまです。

             

            早速のご教授ありがとうございました。

            当環境(WindowsXPとInDesignCS2)で下記のスクリプトでテストをいたしましたところ、「TIFF」・「EPS」・「PSD」全て透明設定がかかってしまいました。

             

            var myGraphics = app.activeDocument.allGraphics;
            for(i=0; i<myGraphics.length; i++) {
            if( (myGraphics[i].imageTypeName != "TIFF") &&
              (myGraphics[i].imageTypeName != "EPS") &&
              (myGraphics[i].imageTypeName != "Photoshop")) {
              myGraphics[i].opacity = 50;
            }
            }

            「CS4」と「CS2」の違いだと思います。

             

            引き続きご指導・ご教授お願い申し上げます。

            • 3. Re: JavaScriptでPhotoshop以外の画像フレームに不透明度を設定する
              にゃす Level 1

              CS2 だと imageTypeName が空っぽ?

              ということで、拡張子で振り分けてみました。

              .TIFF/.TIF/.tiff/.tif/.EPS/.eps/.PSD/.psd 以外は不透明度50%に。

               

              [ CS2 ]

              var myGraphics = app.activeDocument.allGraphics;
              for(i=0; i<myGraphics.length; i++) {
              var myFileName = myGraphics[i].itemLink.name;
              if( (myFileName.search(/.TIF?F$/i) == -1) &&
                (myFileName.search(/.EPS$/i) == -1) &&
                (myFileName.search(/.PSD$/i) == -1)) {
                myGraphics[i].parent.opacity = 50;

              }
              }

               

              [ CS4 ]

              var myGraphics = app.activeDocument.allGraphics;
              for(i=0; i<myGraphics.length; i++) {
              var myFileName = myGraphics[i].itemLink.name;
              if( (myFileName.search(/.TIF?F$/i) == -1) &&
                (myFileName.search(/.EPS$/i) == -1) &&
                (myFileName.search(/.PSD$/i) == -1)) {
                myGraphics[i].parent.transparencySettings.blendingSettings.opacity = 50;
              }
              }

               

              CS2 の方はテストしてませんが、動くでしょうか?

              • 4. Re: JavaScriptでPhotoshop以外の画像フレームに不透明度を設定する
                pokt Level 1

                ゃす

                 

                スクリプトのご教授ありがとうございました。

                完璧に動作いたしました。

                たいへん勉強になりました。

                 

                ・「itemLink.name;」で「リンク名」で検索するのですね。

                ・「search(/.*/i) 」で「正規表現」でリンクの種類を検索するのですね。

                ・「parent.opacity」で「グラフィックの【フレーム】」に透明設定をかけるのですね。

                 

                完全に希望していたとおりの結果を得ることができました。

                本当にありがとうございました。

                 

                ※あつかましいお願いなのですが、フォーラムに載せております、「XML読み込み」後の各フレームのXMLの解除方法をご教授いただければ幸いです。

                現在は各頁で全選択をして、「タグパレット」の「解除」ボタンをクリックしております。

                1000頁の場合は、ドキュメントを見開きにしておりましても、500回程度の同じ作業の繰り返しです。

                よろしくお願い申し上げます。

                 

                pokt