2012-11-23 16 views
5

私は次のことをする必要があります。複数のpngファイルをフォルダに作成し、命名規則を設定します。 1.png 1_m.png、2.png 2_m.png(など)。 pngファイルの幅と高さは同じです(320 x 360ピクセル)。Photoshopスクリプトのフォルダにファイルを併合する(並んで)

は今、スクリプトは次のことを行う必要があります。

1_m.pngを1.pngファイルを取り、1_m.pngが右に左1.pngに置かれた新しいファイルを作成しますそれらの2つを1つのレイヤーにマージし、1_done.png、 というように、フォルダ内のすべてのファイルに対してこのアクションを実行します。

これは、私がウェブを検索したのにPhotoshopスクリプトである必要はありませんが、有用な解決策は見つかりませんでした。ここでは何も設定されていませんが、ファイルは異なるフォルダに存在する可能性があります。 私のPhotoshopのバージョンはCS5です

答えて

3

このスクリプトは、あなたが望むことをします。すべてのファイルをディレクトリに置き、automate batch - >スクリプトを使用してスクリプトを実行します。それは、ファイル名のないイメージを見つけて、ペア名のファイル( "_m")を開いて並べて並べ、ファイル名に_doneを付けて保存します。

// prefピクセル app.preferences.rulerUnits = Units.PIXELS;

var srcDoc = app.activeDocument; 

// call the current document 
var srcDoc = app.activeDocument; 

// set original width and height 
var imageW = srcDoc.width.value; 
var imageH = srcDoc.height.value; 

// get the info out of the source doc 
var fileName = srcDoc.name; 
var docName = fileName.substring(0,fileName.length -4); 
var filePath = srcDoc.path.toString(); 
var fileExt = fileName.substring(fileName.length -4, fileName.length); 

var nameCheck = fileName.substring(0,fileName.indexOf("_")); 

if (nameCheck <1) 
{ 
    // no underscore so we need to open it's namesake 
    // alert(nameCheck) 
    var filePair = filePath + "/" + docName + "_m" + fileExt; 
    openThisFile(filePair) 
    activeDocument.selection.selectAll() 
    activeDocument.selection.copy(); 
    app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); 
    app.activeDocument = srcDoc; 
    activeDocument.resizeCanvas(imageW *2, imageH, AnchorPosition.MIDDLELEFT); 
    selectRect(0, imageW, imageW*2, imageH) 
    activeDocument.paste() 
    activeDocument.flatten(); 
    var newName = filePath + "/" + docName + "_done" + fileExt 
    saveMe(newName) 
} 
    else 
    { 
     app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); 
    } 


function openThisFile(masterFileNameAndPath) 
{ 
var fileRef = new File(masterFileNameAndPath) 
if (fileRef.exists) 
//open that doc 
{ 
    app.open(fileRef); 
} 
else 
{ 
    alert("error opening " + masterFileNameAndPath) 
} 
} 


function selectRect(top, left, right, bottom) 
{ 
    srcDoc.selection.deselect() 
    // ======================================================= 
    var id1 = charIDToTypeID("setd"); 
    var desc1 = new ActionDescriptor(); 
    var id2 = charIDToTypeID("null"); 
    var ref1 = new ActionReference(); 
    var id3 = charIDToTypeID("Chnl"); 
    var id4 = charIDToTypeID("fsel"); 
    ref1.putProperty(id3, id4); 
    desc1.putReference(id2, ref1); 
    var id5 = charIDToTypeID("T "); 
    var desc2 = new ActionDescriptor(); 
    var id6 = charIDToTypeID("Top "); 
    var id7 = charIDToTypeID("#Pxl"); 
    desc2.putUnitDouble(id6, id7, top); 
    var id8 = charIDToTypeID("Left"); 
    var id9 = charIDToTypeID("#Pxl"); 
    desc2.putUnitDouble(id8, id9, left); 
    var id10 = charIDToTypeID("Btom"); 
    var id11 = charIDToTypeID("#Pxl"); 
    desc2.putUnitDouble(id10, id11, bottom); 
    var id12 = charIDToTypeID("Rght"); 
    var id13 = charIDToTypeID("#Pxl"); 
    desc2.putUnitDouble(id12, id13, right); 
    var id16 = charIDToTypeID("Rctn"); 
    desc1.putObject(id5, id16, desc2); 
    executeAction(id1, desc1, DialogModes.NO); 
} 

function saveMe(fPath) 
{ 

// save out the image 
var pngFile = new File(fPath); 
pngSaveOptions = new PNGSaveOptions(); 
pngSaveOptions.embedColorProfile = true; 
pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE; 
pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1; 
activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE); 

// close that saved png 
app.activeDocument.close() 
} 
+0

感謝を。完璧に動作します。私はちょうどバッチを見つけることができません - >スクリプトコマンドそれはPhotoshopの拡張版でのみですか? – adam

+0

まず、スクリプトをアクションとして記録します。アクション - >新しいアクション(名前を付ける)、レコーディングしてから録音を停止する - これはしばしば重要です。バッチファイルからスクリプトを呼び出します。私はCS5についてはわかりませんが、確かにCS2の下では、ファイル→自動化→バッチの下でそれを見つけることができます。そして、それが入っているフォルダを選択してください。 –

+0

この作品は完璧にありがとうございます。 – adam

2

私は、Windows、OSXとLinux用の無料で利用できるのImageMagickでこれを行うだろう - それはとにかく、ほとんどのLinuxディストリビューションにインストールされているという事実に。

それの核心は、基本的にはこのように、並んで2枚の画像側を追加するためにはImageMagickのconvertコマンドを使用することです:

convert left.png right.png +append out.png 

ので、スクリプトは次のようになります - (それの半分近くはコメントです):

#!/bin/bash 
for i in [0-9]*_m.png; do 
    # Deduce name of left image 
    left="$i" 
    # Deduce name of right image 
    right="${i/_m/}" 
    # Deduce name of output image 
    done="${i/_m/_done}" 
    # Merge the little devils 
    convert "$left" "$right" +append "$done" 
done 

我々はこのようなイメージで起動した場合:

enter image description here

enter image description here

これは、すべてのペアのためにこれを生成します。スクリプトの

enter image description here

関連する問題