2011-04-06

[JSX] 開啟檔案到圖層

這個程式會將選取的圖檔開啟,並全部複製到一個新的圖片文件中。

//#target photoshop 

function copyDoc(toDoc, fromDoc){
    app.activeDocument=fromDoc;
    
    /*如果背景不存在,則標記左上角的 1px*/
    if(!fromDoc.backgroundLayer){
        var white = new SolidColor();
        white.rgb.hexValue = 'FFFFFF';
        
        art.selection.select([ [1,0],[1,1],[0,1],[0,0],[1,0] ]);
        art.selection.fill(white, ColorBlendMode.NORMAL, 1);// 填滿    
    }

    //複製圖層
    fromDoc.selection.selectAll()
    fromDoc.selection.copy()

    //貼上圖層
    app.activeDocument=toDoc;
    return toDoc.paste();
}


function main(){
    /*取得多個的檔案路徑*/
    var filePathList = File.openDialog("開啟圖檔","*",true);
    if(filePathList.length == 0){return;}
    
    //新增 Temp 文件
    var newDoc = app.documents.add(
        1, 1, 72,
        "temp",
        NewDocumentMode.RGB,
        DocumentFill.TRANSPARENT
    );
    var maxWidth=1, maxHeight=1;    
    var filePath, i=0;
    while(filePath=filePathList[i++]){
        /*開啟圖檔*/
        try {
            var atDoc=open(new File(filePath));
        } catch (e) { continue; }

        /*最大高度&寬度*/
        if(maxWidth<atDoc.width){ maxWidth=atDoc.width;}
        if(maxHeight<atDoc.height){ maxHeight=atDoc.height;}

        /*複製檔案*/
        copyDoc(newDoc, atDoc);
        
        /*關閉檔案*/
        atDoc.close(SaveOptions.DONOTSAVECHANGES);
    }
    
    /*變更圖片尺寸*/
    app.activeDocument=newDoc;
    newDoc.resizeCanvas(maxWidth, maxHeight, AnchorPosition.TOPLEFT);
}


//把Photoshop推到最上層
app.bringToFront();
//設定使用的單位為「像素(Pixel)」
app.preferences.rulerUnits = Units.PIXELS;
//執行主程式
main();

0 回應: