mk4web Script for Photoshop CS3

更新日: 2008/12/14

自分で書いたadobe Photoshop CS3用のweb掲載用データ作成スクリプトを公開しています。

[Access Counter]
since 2008/12/14
Sorry, ISO-2022-JP ONLY

スクリプト使用上の注意

無保証です。使用する場合は自己責任でお願いします。

Windows XP 上の Photoshop CS3 でしか実行確認していません。JavaScriptなのでMac版でも動く可能性はあります。

ぼく個人用の設定のままです。
スクリプトは各自編集して、カスタマイズしてください。

編集は普段使用されているエディタで十分だと思いますが、文字コード(UTF-8)等の問題もあるので、 adobe の ExtendScript Toolkit 2 を推奨します。

ExtendScript Toolkit 2 は、Photoshop CS3をインストールしていれば、Windows XPなら
"C:\Program Files\Adobe\Adobe Utilities\ExtendScript Toolkit 2\ExtendScript Toolkit 2.exe"
にあると思います。
うちは、スタートメニューから辿れるけど、自分でメニューに入れたような気がします(笑)。

web掲載用データ作成スクリプト

Photoshop CS3用のスクリプトです。[mk4web.jsx]
ファイルの文字コードの問題もあるので、うまいことダウンロードしてください(笑)。
各自のお好みにカスタマイズ後、スクリプトファイルを Windows XP ならば
"C:\Program Files\Adobe\Adobe Photoshop CS3\プリセット\スクリプト\"
に置いて、Photoshopを起動してください。
Photoshopの『ファイル(F)』→『スクリプト(I)』メニューを開くと、メニューにスクリプトファイルの名前(拡張子を除いた名前)で追加されているはずなので、そこから実行させます。
ファイル名を変更すればメニューに登録される名前を変えられるはずです。

スクリプトのカスタマイズ中は、ExtendScript Toolkit 2の中で実行するのが便利です。

バッチ処理やBridgeで選択したファイルに一括適用したりするには、スクリプトを実行して別名保存するアクションを登録してください。
で実行時のバッチダイアログで『"別名で保存"コマンドを省略』にチェックを入れて実行すれば一括で適用できます。

カスタマイズのヒント

以下に簡単な解説を付けておきます。
   1  // forWeb livedoor blog -- photoshop CS3
   2  //                                  by katsu2.
   3  //
   4  // web用にリサイズしてウォーターマークを付ける
   5  //
   6  
   7  try {
   8      //---------  可変項目設定 ------------------------------------------------------
   9      var author = "katsu2.";                                     // 著作権者名
  10      var waterMarkString = "http://blog.livedoor.jp/katsu0124/"; // ウォーターマーク文字列
  11      var fontName = "RageItalicLetPlain";                        // WMarkフォント
  12      var opacity = 65;                                           // WMark透明度
  13      var watermarkColor = new SolidColor();
  14      watermarkColor.rgb.red = 200;                               // WMark色(R)
  15      watermarkColor.rgb.green = 200;                             // WMark色(G)
  16      watermarkColor.rgb.blue = 255;                              // WMark色(B)
  17      var styleName = "forWaterMark";                             // WMark適用スタイル
  18      
  19      // 長辺のピクセル数と解像度を設定
  20      var longerSide = 768;                                       // web用画像サイズ
  21      var shorterSide = 0;            // 短辺はリサイズ時に計算
  22      var resolution  = 72;
  23      // リサイズ時の補完方式は次の3種類のどれか
  24      // BICUBIC,BICUBICSMOOTHERまたはBICUBICSHARPER
  25      var resample_method = ResampleMethod.BICUBIC;
  26  
  27      //---------  処理開始  ------------------------------------------------------
  28      // 元のダイアログモードを保存して、開かないように設定
  29      var originalDDialogs = displayDialogs;
  30      displayDialogs = DialogModes.NO;    // ダイアログを開かないようにする
  31      // 元の単位を保存して、単位をピクセルに設定
  32      var originalUnit = preferences.rulerUnits;
  33      preferences.rulerUnits = Units.PIXELS;
  34  
  35      var docRef = activeDocument;
  36  
  37      //---------  著作権情報設定 ------------------------------------------------------
  38      docRef.info.author = author;
  39      var i = 0;
  40      var exif = docRef.info.exif;
  41      var year;
  42      for (i =0; i < exif.length; i++) {
  43          if (exif[i][0] == "原画像データの生成日時") {
  44              year = exif[i][1].substr (0, 4);
  45              break;
  46          }
  47      }
  48      docRef.info.copyrightNotice = "Copyright (C) " + year + " " + author;
  49  
  50      //---------  web用にリサイズする ------------------------------------------------------
  51      // 元の画像のサイズを取得
  52      var docWidth = docRef.width.value;
  53      var docHeight = docRef.height.value;
  54  
  55      // 画像が縦長か横長かに応じてリサイズ
  56      if (docWidth > docHeight) { // ランドスケープ
  57          if (docWidth > longerSide) {    // 大きいときだけリサイズ
  58              shorterSide = longerSide * docHeight / docWidth;
  59              docRef.resizeImage(longerSide, shorterSide, resolution, resample_method);
  60          } else {
  61              longerSide = docWidth;
  62              shorterSide = docHeight;
  63          }
  64      } else {                                // ポートレート
  65          if (docHeight > longerSide) {   // 大きいときだけリサイズ
  66              shorterSide = longerSide * docWidth / docHeight;
  67              docRef.resizeImage(shorterSide, longerSide, resolution, resample_method);
  68          } else {
  69              longerSide = docHeight;
  70              shorterSide = docWidth;
  71          }
  72      }
  73  
  74      //---------  ウォーターマークを付加する ------------------------------------------------------
  75      var watermarkLayer = docRef.artLayers.add();
  76      
  77      watermarkLayer.kind = LayerKind.TEXT;
  78      watermarkLayer.name = "WaterMark";
  79      watermarkLayer.blendMode = BlendMode.NORMAL;
  80      watermarkLayer.opacity = opacity;
  81  
  82      // テキストレイヤーに文字を入力
  83      var watermarkText = watermarkLayer.textItem;
  84      watermarkText.justification = Justification.RIGHT;
  85      watermarkText.contents = waterMarkString;
  86      watermarkText.font = fontName;
  87      watermarkText.size = (shorterSide * 2.3) / watermarkText.contents.length;
  88      watermarkText.position = new Array(docRef.width.value * 97 / 100,
  89                                                              docRef.height.value * 93 / 100);
  90      watermarkText.color = watermarkColor;
  91      if (styleName != "") {
  92          watermarkLayer.applyStyle(styleName);
  93      }
  94      
  95      // レイヤーを統合する
  96      docRef.flatten();
  97  
  98      // 単位の設定を元に戻す
  99      preferences.rulerUnits = originalUnit;
 100      // ダイアログモードを元に戻す
 101      displayDialogs = originalDDialogs;
 102  }
 103  catch (e) {
 104      // alert (e);
 105  }

8-24行目で変更しそうな項目を設定しています。
とりあえず使う場合は、 最低、9行目の著作権者名と10行目のウォーターマーク文字列、17行目のWMark適用スタイルをカスタマイズしてください。
著作権者名は、Exifに埋め込まれます。もと画像に設定されていても上書きされます。
ウォーターマーク文字列は好きな文字列にしてください。ぼくは、掲載ブログのURLにしてますが、なんでも良いです。
WMark適用スタイルは、ウォーターマーク文字列をテキストレイヤーに適用するスタイルの名前を設定します。
ぼくはウォーターマーク用に自分で登録したスタイルの名前を設定しています。 最初は""を設定してスタイル適用しないようにして、必要なら後で設定してください。
11行目のWMarkフォントには、フォント名を設定するのですが、Photoshopが認識する名前にしてやらないと、 デフォルトのフォントが使われます。Windows XPだとMSゴシックだったかな?
自分でテキストレイヤーにフォントを設定して、そのフォント名を調べるスクリプトを作ってあるので、後述します。

28-30行目で、ダイアログが開かないように設定しています。最後に元の設定に戻せるように設定は保存します。
これを設定しないと、ぼくの環境では、スクリプトの実行ではダイアログが開かずに処理されるのに、 バッチ処理で実行すると、いちいちダイアログが開いて自動実行されなかったので、この設定をするようにしました。
32-33行目で、単位をピクセルに変更しています。これも、元の設定を保存して、後で戻します。

37-48行目で著作権情報を埋め込んでいます。
Exifデータから元のファイル生成日から生成年を取得して、著作権情報を組み立てExifに設定しています。

50-72行目でweb用にリサイズします。
横長、縦長を判定して、長辺のサイズを20行目に設定したサイズにリサイズします。
長辺が設定サイズより小さい場合は、リサイズしません。

74行目から、ウォーターマークの作成です。
75-80行でテキストレイヤーを作成しています。
80行目の透明度は、12行目で設定しているWMark透明度です。
82-90行目で、テキストレイヤーに文字列を設定しています。
87行目でフォントサイズを短辺の長さと文字列の長さから計算しています。 2.3は試行錯誤して決めた値です。好みで変更してください。
88行目の表示位置を決めています。上から93%、左から97%の位置に設定してます。
これは、84行目で右揃えにしているので、文字列の終端の位置になります。
ここも好みで変更してください。
91-93行目でテキストレイヤーにスタイルを適用します。スタイル名が""のときは適用されません。

96行目でレイヤーを統合しています。
はじめは、この行をコメントアウトして、テキストレイヤーの設定を探って、スクリプト内の設定値を決定するのが良いでしょう。

最後に、この処理用に変更した設定を元に戻して、終了です。

テキストレイヤーフォント名出力スクリプト

Photoshop CS3用のスクリプトです。[fontName.jsx]
ファイルの文字コードの問題もあるので、うまいことダウンロードしてください(笑)。

Photoshop CS3でテキストレイヤーを作ってください。
フォントリストから好みのフォントを設定してください。
それから、ダウンロードしたfontName.jsxを、ExtendScript Toolkit 2の中で実行してください。
ExtendScript Toolkit 2のJavaScript コンソールにフォント名が表示されます。



E-Mail & Private Page URL

ご意見・ご感想等がありましたら、下記のアドレスの方までE-mail下さい。

Internet: katsu2@tky.3web.ne.jp
Main blog URL: http://blog.livedoor.jp/katsu0124/
portrait blog URL: http://katsu0124.blog115.fc2.com/
[katsu2.]