WaterMark画像を画像右下に挿入するPhotoShop用JSXスクリプト

ブログにアップする画像の右下に【sabaten.com】の権利表記を挿入するスクリプトを作りました。

調べてわかったのですがこのマークのことはウォーターマーク(watermark)と呼ぶそうです。もともとは紙に入れる透かしという意味らしいです。

使った言語は画像をリサイズするスクリプトでも使っていた、PhotoShop用のJavascriptのJSXを使用しました。

処理の流れは簡単で、

———————————————————————

元画像をコピーしてウォーターマークを貼る用の画像を作成

ウォーターマークの画像を開いて貼りたい画像にペースト(真ん中に貼られる)

貼られたウォーターマーク画像を画面右下から縦横10ピクセル離した位置に移動

ファイル名を変更しつつ、指定されたパスにJpegで保存

ファイルを閉じる

———————————————————————

といった感じです。

スクリプトは以下のような感じになります。

//sabaten.com
//PhotoShop用JSX
//
//ウォーターマークを画像右下から10ピクセル離して挿入する

//====初期化====
var spaceW=10;    //ウォーターマークを画面端からの離す幅距離
var spaceH=10;    //ウォーターマークを画面端からの離す高さ距離
var jpegQuality=12;  //JPEG出力時のクオリティ(0~12)
var outPutPath="/c/output/";    //任意の出力パス

var saveRulerUnits=preferences.rulerUnits; //単位の保存
preferences.rulerUnits=Units.PIXELS; //単位をピクセルに

//====開いている画像の取得====
var baseFile=activeDocument;               //現在アクティブなドキュメントを取得
var baseName=baseFile.name.split(".")[0];  //ファイル名の取得

//====保存の設定====
var saveName=baseName+"_WaterMark"; //保存ファイル名の設定
var saveFile=new File(outPutPath+saveName);   //保存パス+保存ファイル名 

//====画像のコピー====
var x=baseFile.width;  //ベースファイルの横幅を取得
var y=baseFile.height; //ベースファイルの高さを取得
baseFile.selection.selectAll(); //全選択
baseFile.selection.copy();    //選択範囲のコピー

//====新規ドキュメントに貼り付け====
var newFile=documents.add(x,y,baseFile.resolution,"New File");   //新規ファイルの作成
newFile.paste();       //貼り付け
newFile.flatten();     //レイヤー結合

//====watermarkの挿入====
var watermark = new File("/c/watermark.png");  //ウォーターマーク画像のパスを取得
open(watermark);    //画像を開く

var wmFile=activeDocument;
var wmX=wmFile.width;    //ウォーターマークの横幅の取得
var wmY=wmFile.height;   //ウォーターマークの高さの取得

wmFile.selection.selectAll();
wmFile.activeLayer.copy();
wmFile.close(SaveOptions.DONOTSAVECHANGES);  
wmFile=null;

newFile.paste();	//ウォーターマークの画像の取得

var transW=(x/2)-(wmX/2)-spaceW;    //ウォーターマークの移動横幅の計算
var transH=(y/2)-(wmY/2)-spaceH;    //ウォーターマークの移動高さの計算

activeDocument.activeLayer.translate(transW,transH);	//ウォーターマークを画像右下に移動

//====JPEGで保存====
var jpegSaveOpt=new JPEGSaveOptions();    //JPEG保存設定
jpegSaveOpt.quality=jpegQuality;  //JPEGクオリティ
jpegSaveOpt.embedColorProfile=false;
jpegSaveOpt.formatOptions=FormatOptions.OPTIMIZEDBASELINE;

newFile.saveAs(saveFile,jpegSaveOpt,true,Extension.LOWERCASE);

//====貼り付けドキュメントを閉じる====
newFile.close(SaveOptions.DONOTSAVECHANGES);
newFile=null;

//====対象ファイルを閉じる====
baseFile.close(SaveOptions.DONOTSAVECHANGES);
baseFile=null;

preferences.rulerUnits=saveRulerUnits; //単位を元に戻す

実はこのスクリプトはこの前にブログに書いた【画像を指定した解像度にリサイズするPhotoShop用スクリプト】に組み込んで使っていたのですが、何故か変換する画像のサイズによってウォーターマーク画像の位置がズレることがあったので、ウォーターマーク画像の挿入を単体のスクリプトに分離することにしました。

まぁ、画像をリサイズして映りこんでいる人の顔にボカし入れる編集をすることもあるので、別々にしても特に問題ないですね。

スクリプトの手動切り替えが面倒くさいのならバッチファイルに連続で処理させればいいだけですからね。

これでリサイズと権利表記の挿入のスクリプトが出来たのでブログに画像をアップする処理が大分楽になりました。

あとはリネームのスクリプトがあればギャラリーの画像をまとめるのが楽そうなので、命名規則を考えてスクリプトも考えていきましょうかね。