2014-01-23 2 views
1

주어진 PSD에서 jpg 파일로 수백 개의 레이어를 저장해야합니다. Leyers는 여러 그룹으로 그룹화되며 모든 그룹의 이름은 jpg 파일의 접두사와 비교되어야합니다.Photoshop : 그룹 이름을 접두사로 추가하는 파일로 레이어 내보내기

그룹 1 | layer1 | layer2 | layer3

그룹 2 | layer1 | 계층 2

나는 이런 식으로 뭔가가 필요합니다

그룹 1 - layer1.jpg 1 그룹 - layer2.jpg 1 그룹 - layer3.jpg 그룹 2 - layer1.jpg 그룹 2 - layer2.jpg

I을 그룹을 병합하고 내보내지만 내 필요에 따라 아무것도 찾을 수없는 많은 .jsx 스크립트를 발견했습니다. 누구든지 그 일을하는 방법을 알고 있습니까? 감사합니다. ema

답변

1

이 코드를 사용해보십시오.

#target photoshop 
//$.level = 2; 

/* 
* Script by Loginoff Nick (nloginoff (at) gmail dot com) 
* Script export layers to files adding group-name as prefix or create folders like a groups 
* Function translite - replac a russian words to english. 
* Photoshop CS5 
* 04.02.2014 
* 
*/ 


var LONG_NAMES = 0; // Save Long Names - Folder_SubFolder_Layer or save only "Layer" 
var CREATE_FOLDERS = 1; // Create Hierarchy Folders. Warning if this 0 and LONG_NAMES = 0, maybe recreate files. 
var SEPARATOR = '_'; // Separator for file name 
var PREFIX_FILE = '' + SEPARATOR; // 


function main(){ 
    if(!documents.length) return; 
    var doc = activeDocument; 
    var DocPath = activeDocument.path; 
    var DocName = translite(doc.name.replace(/\.psd/g,'')); 

    var outFolder = new Folder(DocPath + "/" + DocName + "_layers"); 
    if (!outFolder.exists) { 
     outFolder.create(); 
    } 

    scanLayers(doc,outFolder,PREFIX_FILE + DocName); 

    function scanLayers(el, current_folder, prefix_name) { 

     for(var a=0;a<el.layers.length;a++) { 
      var lname = translite(el.layers[a].name); 
      var file_name = lname; 
      if (LONG_NAMES) { 
       file_name = prefix_name + SEPARATOR + lname; 
      } 

      saveLayer(el.layers[a], file_name, current_folder, false); 

      // recurstion 
      if (el.layers[a].layers && el.layers[a].layers.length > 0) { 
       var new_folder = current_folder; 
       if (CREATE_FOLDERS) { 
        new_folder = current_folder + "/" + lname; 
        var destFolder = new Folder(new_folder); 
        if (!destFolder.exists) {    
         destFolder.create(); 
        } 
       } 
       scanLayers(el.layers[a], new_folder, file_name); 
      } 
     } 
    } 

    function translite(str){ 
     var arr={'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ж':'g', 'з':'z', 'и':'i', 'й':'y', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o', 'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'ы':'i', 'э':'e', 'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ж':'G', 'З':'Z', 'И':'I', 'Й':'Y', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O', 'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Ы':'I', 'Э':'E', 'ё':'yo', 'х':'h', 'ц':'ts', 'ч':'ch', 'ш':'sh', 'щ':'shch', 'ъ':'', 'ь':'', 'ю':'yu', 'я':'ya', 'Ё':'YO', 'Х':'H', 'Ц':'TS', 'Ч':'CH', 'Ш':'SH', 'Щ':'SHCH', 'Ъ':'', 'Ь':'','Ю':'YU', 'Я':'YA'}; 
     var replacer=function(a){return a in arr ? arr[a] : '';}; 
     return str.replace(/[А-яёЁьЬ]/g,replacer).toLowerCase(); 
    } 

}; 

main(); 

function saveLayer(layer, lname, path, shouldMerge) { 
    activeDocument.activeLayer = layer; 
    dupLayers(); 
    if (shouldMerge === undefined || shouldMerge === true) { 
     activeDocument.mergeVisibleLayers(); 
    } 
    activeDocument.trim(TrimType.TRANSPARENT,true,true,true,true); 
    var saveFile= File(path +"/"+lname+'.png'); 
    SavePNG(saveFile); 
    app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); 
}; 

function dupLayers() { 
    var desc143 = new ActionDescriptor(); 
     var ref73 = new ActionReference(); 
     ref73.putClass(charIDToTypeID('Dcmn')); 
    desc143.putReference(charIDToTypeID('null'), ref73); 
    desc143.putString(charIDToTypeID('Nm '), activeDocument.activeLayer.name); 
     var ref74 = new ActionReference(); 
     ref74.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt')); 
    desc143.putReference(charIDToTypeID('Usng'), ref74); 
    executeAction(charIDToTypeID('Mk '), desc143, DialogModes.NO); 
}; 

function SavePNG(saveFile){ 
    var pngOpts = new ExportOptionsSaveForWeb; 
    pngOpts.format = SaveDocumentType.PNG 
    pngOpts.PNG8 = false; 
    pngOpts.transparency = true; 
    pngOpts.interlaced = false; 
    pngOpts.quality = 100; 
    activeDocument.exportDocument(new File(saveFile),ExportType.SAVEFORWEB,pngOpts); 
}; 
관련 문제