ただの備忘記録

忘れないように記録を残します。忘れるから記録に残してます。そして、その記録が役立つといいかな。

【Photoshop JSX Script】ファイル番号、二階調化、解像度変更、保存

2015年03月27日 | JavaScript

Photoshopのスクリプトを初めてやってみました。
JavaScriptを母体にしていることは知っていましたが、まさか使うことになるとは思ってもいませんでした。

スクリプトの目的は、ファイル名からページ番号を抜き取って画面内にテキストレイヤーとしてページ番号を表示し、データを二階調化して、解像度を変更、最後にページ番号を付けたファイル名を作り直して保存します。

色々と調べながら散見する情報を集めて作ってみました。
その中で非常に分かりずらかった二階調化の処理方法について書き残しておきます。

~~~~~~~~~~以下スクリプト~~~~~~~~~~

var defUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS; //単位をpixelに設定
setPageNumber();
preferences.rulerUnits = defUnit;

function setPageNumber() {
    //アクティブドキュメントを取得
    var doc = activeDocument;
 
    //パス取得
    var d_path = activeDocument.fullName.fsName.toString();
    d_path = d_path.substring(0,d_path.lastIndexOf("\\")+1);

    //ファイル名取得
    var d_name = doc.name;

    //ページ番号(ファイル名から切り出し)
    var page = d_name.substring(1,5);

    //レイヤー取得
    var layerObj = doc.artLayers;
   
    //ページ番号のレイヤー作成
    var newLayer = layerObj.add(); // 新規レイヤーを追加
    newLayer.kind = LayerKind.TEXT; // レイヤー種別をテキストレイヤーに設定
    newLayer.textItem.contents ="No." + page; // テキストレイヤーに文字列を設定
    newLayer.textItem.position = [0, 0]; // 座標を指定(pixel)
    newLayer.textItem.font = "MS Gothic"; // フォント名。
    newLayer.textItem.size = 14; // フォントサイズ。

    //二階調化
    doc.flatten(); //統合
    doc.changeMode(ChangeMode.GRAYSCALE); //カラーの場合、一旦グレーにする

    var bitSaveOptions = new BitmapConversionOptions();
    bitSaveOptions .method = BitmapConversionType.HALFTONESCREEN; //ハーフトーン
    bitSaveOptions .angle = 45; //角度
    bitSaveOptions .frequency = 60; //線数
    bitSaveOptions .resolution = 600; //解像度(変更可)
    bitSaveOptions .shape = BitmapHalfToneType.ROUND; //円

    doc.changeMode(ChangeMode.BITMAP, bitSaveOptions ); //白黒2bit

    //別名保存の設定
    saveFileObj = new File(d_path + "xx" + page); //保存ファイル名
    psdSaveOpt = new PhotoshopSaveOptions;
    psdSaveOpt.alphaChannels = true;
    psdSaveOpt.annotations = true;
    psdSaveOpt.embedColorProfile = true;
    psdSaveOpt.layers = true;
    psdSaveOpt.spotColors = true;

    //保存する
    try {
        activeDocument.saveAs(saveFileObj,psdSaveOpt,false,Extension.LOWERCASE);
    } catch(msg) {
        alert(msg + " 保存できませんでした");
    }
}

【注意点】

「preferences.rulerUnits」を使って単位を指定しないと、設定の単位に影響されてスクリプト内の数値も単位が変わってしまいます。
解像度は二階調化と同時に設定していますので、変更がある場合は、二階調化の中で行います。



最新の画像もっと見る

コメントを投稿