#target photoshop; app.bringToFront(); if(documents.length) main(); function main(){ var selectedLayers=[]; var selLayers = getSelectedLayersIdx().reverse(); for(var x in selLayers){ if(!isLayerSet(selLayers[x])) selectedLayers.push(selLayers[x]); } if(selectedLayers.length <2){ alert('You need to have more than one layer selected!'); return; } var FileName = decodeURI(activeDocument.name).replace(/\.[^\.]+$/, ''); var win = new Window( 'dialog', '',undefined, {closeButton: false}); win.graphics.backgroundColor = win.graphics.newBrush(win.graphics.BrushType.SOLID_COLOR, [0.99, 0.99, 0.99, 1]); win.grp3000 = win.add('group'); win.grp3000.st1= win.grp3000.add('statictext',undefined,'Layer Saver Plus'); win.grp3000.st1.graphics.font = ScriptUI.newFont('Georgia','BOLDITALIC',30); win.all= win.add('group'); win.all.orientation = 'row'; win.p1= win.all.add('panel', undefined, undefined, {borderStyle:'black'}); win.p1.preferredSize=[500,425]; win.p2= win.all.add('panel', undefined, undefined, {borderStyle:'black'}); win.p2.preferredSize=[500,425]; win.g10 = win.p1.add('group'); win.g10.orientation = 'row'; win.title = win.g10.add('statictext',undefined,'Please select common layers'); win.title.helpTip="All Adjustment layers are selected automatically"; win.title.alignment='bottom'; var g = win.title.graphics; g.font = ScriptUI.newFont('Georgia','BOLDITALIC',28); win.g20 = win.p1.add('group'); win.g20.orientation = 'row'; win.lb1 = win.g20.add('listbox',undefined,'Layer List' ,{multiselect: true}); win.lb1.preferredSize=[450,295]; for(a=0;a 0){ backGroundCounter = activeDocument.artLayers[activeDocument.artLayers.length - 1].isBackgroundLayer ? 0 : 1; } var ref = new ActionReference(); ref.putProperty(charIDToTypeID("Prpr"), stringIDToTypeID("targetLayers")); ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); var desc = executeActionGet(ref); if( desc.hasKey( stringIDToTypeID( "targetLayers" ) ) ){ desc = desc.getList( stringIDToTypeID( "targetLayers" )); var c = desc.count; var selectedLayers = new Array(); for(var i=0;i 15) return selectedLayers ; }else{ if(app.version.match(/^\d+/) > 15) return selectedLayers ; var ref = new ActionReference(); ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "ItmI" )); ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); if(!backGroundCounter){ selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" )) -1); }else{ selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" ))); } var vis = app.activeDocument.activeLayer.visible; if(vis == true) app.activeDocument.activeLayer.visible = false; var desc9 = new ActionDescriptor(); var list9 = new ActionList(); var ref9 = new ActionReference(); ref9.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); list9.putReference( ref9 ); desc9.putList( charIDToTypeID("null"), list9 ); executeAction( charIDToTypeID("Shw "), desc9, DialogModes.NO ); if(app.activeDocument.activeLayer.visible == false) selectedLayers.shift(); app.activeDocument.activeLayer.visible = vis; } return selectedLayers; }; function isAjustmentLayer(idx){ var ref = new ActionReference(); ref.putIndex( charIDToTypeID( 'Lyr ' ), idx); var desc = executeActionGet(ref); if(desc.hasKey(charIDToTypeID('Adjs'))){ adjust=true; var vMask = desc.getBoolean(stringIDToTypeID('hasVectorMask' )); try{ if(vMask == true){ adjust = false; var Shape = true; } }catch(e){var adjust = false; var Shape = false;} } return adjust; }; function isLayerSet(idx){ var ref = new ActionReference(); ref.putIndex( charIDToTypeID( 'Lyr ' ), idx); var desc = executeActionGet(ref); var isSet = typeIDToStringID(desc.getEnumerationValue(stringIDToTypeID('layerSection'))); var LayerSet=false; switch (isSet.toString()){ case 'layerSectionStart' : LayerSet=true; break; case 'layerSectionEnd' : LayerSet=true; break; case 'layerSectionContent' : LayerSet=false; break; } return LayerSet; }; function getActionSets(){ var aSets=[]; var ref = new ActionReference(); ref.putIndex(charIDToTypeID('ASet'), 1); var desc = executeActionGet(ref); var Count = desc.getInteger(stringIDToTypeID('count')) + 1; for(var t=1; t<=Count; t++){ var ref = new ActionReference(); ref.putIndex(charIDToTypeID('ASet'), t); var desc = executeActionGet(ref); var actName = desc.getString(charIDToTypeID('Nm ')); aSets.push(actName); } return aSets; }; function getActions(aSet){ var names = []; var ref = new ActionReference(); ref.putName(charIDToTypeID('ASet'), aSet); var desc = executeActionGet(ref); var Count = desc.getInteger(stringIDToTypeID('numberOfChildren')); for(var t=1; t<=Count; t++){ var ref = new ActionReference(); ref.putIndex(charIDToTypeID('Actn'), t); ref.putName(charIDToTypeID('ASet'), aSet); var desc = executeActionGet(ref); names.push(desc.getString(charIDToTypeID('Nm '))); } return names; }; function SaveDOC(saveFile){ switch(Number(win.g1080.dd1.selection.index)){ case 0 : SavePNG(File(saveFile+".png")); break; case 1: SavePSD(File(saveFile+".psd")); break; case 2: SavePDF(File(saveFile+".pdf")); break; case 3: SaveTIFF(File(saveFile+".tif"),Number(win.g1090c.dd1.selection.index)); break; case 4: SaveJPG(File(saveFile+".jpg"),Number(win.g1090b.dd1.selection.index)+1); break; case 5: SaveForWeb(File(saveFile+ ".jpg"),Number(win.g1090d.dd1.selection.index)+1); break; case 6: savePCX(saveFile +".pcx"); break; case 7: saveAsPNG24SFW(File(saveFile+".png")); break; default : break; } }; function zeroPad(n, s) { n = n.toString(); while (n.length < s) n = '0' + n; return n; }; function SavePNG(saveFile){ pngSaveOptions = new PNGSaveOptions(); activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE); }; function SaveTIFF(saveFile,Comp){ tiffSaveOptions = new TiffSaveOptions(); tiffSaveOptions.embedColorProfile = true; tiffSaveOptions.transparency = true; tiffSaveOptions.alphaChannels = true; tiffSaveOptions.layers = true; switch (Number(Comp)){ case 0 : tiffSaveOptions.imageCompression = TIFFEncoding.TIFFLZW; break; case 1 : tiffSaveOptions.imageCompression = TIFFEncoding.TIFFZIP; break; case 2 : tiffSaveOptions.imageCompression = TIFFEncoding.JPEG; break; case 3 : tiffSaveOptions.imageCompression = TIFFEncoding.NONE; break; default : break; } activeDocument.saveAs(saveFile, tiffSaveOptions, true, Extension.LOWERCASE); }; function SavePSD(saveFile){ psdSaveOptions = new PhotoshopSaveOptions(); psdSaveOptions.embedColorProfile = true; psdSaveOptions.alphaChannels = true; psdSaveOptions.layers = true; activeDocument.saveAs(saveFile, psdSaveOptions, true, Extension.LOWERCASE); }; function SavePDF(saveFile){ pdfSaveOptions = new PDFSaveOptions(); activeDocument.saveAs(saveFile, pdfSaveOptions, true, Extension.LOWERCASE); }; function SaveJPG(saveFile, jpegQuality){ try{ jpgSaveOptions = new JPEGSaveOptions(); jpgSaveOptions.embedColorProfile = true; jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE; jpgSaveOptions.matte = MatteType.NONE; jpgSaveOptions.quality = jpegQuality; activeDocument.saveAs(saveFile, jpgSaveOptions, true,Extension.LOWERCASE); }catch(e){$.writeln(e+" - "+e.line);} }; function SaveForWeb(saveFile,jpegQuality) { var sfwOptions = new ExportOptionsSaveForWeb(); sfwOptions.format = SaveDocumentType.JPEG; sfwOptions.includeProfile = false; sfwOptions.interlaced = 0; sfwOptions.optimized = true; sfwOptions.quality = Number(jpegQuality); var tmpFile = File(saveFile.path+"/tmpFile.jpg"); activeDocument.exportDocument(tmpFile, ExportType.SAVEFORWEB, sfwOptions); tmpFile.rename(decodeURI(saveFile.name)); }; function savePCX(saveFile) { var desc = new ActionDescriptor(); desc.putString( charIDToTypeID('As '), "PCX" ); desc.putPath( charIDToTypeID('In '), new File( saveFile ) ); executeAction( charIDToTypeID('save'), desc, DialogModes.NO ); }; function saveAsPNG24SFW(fileName) { var desc3 = new ActionDescriptor(); var desc4 = new ActionDescriptor(); desc4.putEnumerated( charIDToTypeID('Op '), charIDToTypeID('SWOp'), charIDToTypeID('OpSa') ); desc4.putEnumerated( charIDToTypeID('Fmt '), charIDToTypeID('IRFm'), charIDToTypeID('PN24') ); desc4.putBoolean( charIDToTypeID('Intr'), false ); desc4.putBoolean( charIDToTypeID('Trns'), true ); desc4.putBoolean( charIDToTypeID('Mtt '), false ); desc4.putInteger( charIDToTypeID('MttR'), 255 ); desc4.putInteger( charIDToTypeID('MttG'), 255 ); desc4.putInteger( charIDToTypeID('MttB'), 255 ); desc4.putBoolean( charIDToTypeID('SHTM'), false ); desc4.putBoolean( charIDToTypeID('SImg'), true ); desc4.putBoolean( charIDToTypeID('SSSO'), false ); var list1 = new ActionList(); desc4.putList( charIDToTypeID('SSLt'), list1 ); desc4.putBoolean( charIDToTypeID('DIDr'), false ); desc4.putPath( charIDToTypeID('In '), new File( fileName ) ); desc3.putObject( charIDToTypeID('Usng'), stringIDToTypeID('SaveForWeb'), desc4 ); executeAction( charIDToTypeID('Expr'), desc3, DialogModes.NO ); }; };