【Photoshop JS脚本】jsx运行动作的几种方法
分类专栏: # Photoshop 脚本
最后发布:2020-11-04 11:48:48首次发布:2020-11-04 11:48:48
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
版权
1.动作已经存在PS动作面板,直接播放
app.doAction(“Action 2”,“Set 2”);
动作管理器用法
play_action("默认动作", "存储为 Photoshop PDF")//Examples of using://play_action("Set 1", "Action 1") // Perform the whole action// 执行整个动作//play_action("Set 1", "Action 1", 4, true) // Complete all from the beginning of the command number 4// 从命令编号4 的开头全部完成//play_action("Set 1", "Action 1", 5, false) // Will execute only command number 5// 仅执行命令编号5// cmd_number - the index of the command, ( starts from 1 )function play_action(set, action, cmd_number, allow_continue){try{var d = new ActionDescriptor();var r = new ActionReference();if (typeof(cmd_number) == "number") r.putIndex( charIDToTypeID( "Cmnd" ), cmd_number );r.putName( charIDToTypeID( "Actn" ), action );r.putName( charIDToTypeID( "ASet" ), set );d.putReference( charIDToTypeID( "null" ), r );if (typeof(allow_continue) == "boolean") d.putBoolean( charIDToTypeID( "Cntn" ), allow_continue );executeAction( charIDToTypeID( "Ply " ), d, DialogModes.NO );}catch(e) { alert(e); }}
2.动作不存在,先加载进PS动作面板在播放
app.load(File("C:\\2.atn"));app.doAction(“Action 2”,“Set 2”);
3.动作不存在,不加载进PS动作面板,直接播放
app.bringToFront();/*************************************************Play a specific action contained in an actions file (.atn), without the need to load the file in the Actions Palette.http://www.tonton-pixel.com/JSON%20Action%20Manager/jsDoc/symbols/jamActions.htmlUtility script using the "JSON Action Manager" scripting library.© 2011-2015 Michel MARIANI.******************************************************///------------------------------------------------------------------------------// jamActions.jsxinc v4.4 (minified)if(typeof jamActions!=='object'){var jamActions={};(function(){jamActions.isActionsFile=function(file){return(file.type==='8BAC')||file.name.match(/\.atn$/i);};jamActions.isActionsPalette=function(file){return((file.type==='8BPF')&&file.name.match(/^Actions Palette$/i))||file.name.match(/^Actions Palette.psp$/i);};function readBEInt(file,byteCount){var bytes=file.read(byteCount);var intValue=0;for(var index=0;index<byteCount;index++) {intValue=(intValue<<8)+bytes.charCodeAt(index);}return intValue;}function readBytes(file,byteCount){return file.read(byteCount);}function readByteString(file){var stringLength=readBEInt(file,4);return readBytes(file,stringLength);}function readUnicodeString(file) {var unicodeString="";var unicodeLength=readBEInt(file,4);for(var index=0;index<unicodeLength;index++){var unicodeChar=readBEInt(file,2);if(unicodeChar!==0){unicodeString+=String.fromCharCode(unicodeChar);}}return unicodeString;} function readEventId(file){var eventId=0;var eventType=readBytes(file,4);switch(eventType) {case'TEXT':eventId=app.stringIDToTypeID(readByteString(file));break;case'long':eventId=app.charIDToTypeID(readBytes(file,4));break;default:throw new Error("[jamActions readEventId] Unrecognized event type: '"+eventType+"'");break;}return eventId;} function skipDouble(file) {file.seek(8,1);}function skipDoubles(file,doubleCount){file.seek(doubleCount*8,1);}function skipInt8(file) {file.seek(1,1);}function skipInt16(file) {file.seek(2,1);}function skipInt32(file) {file.seek(4,1);}function skipInt64(file) {file.seek(8,1);}function skipBytes(file,byteCount) {file.seek(byteCount,1);}function skipByteString(file) {var stringLength=readBEInt(file,4);skipBytes(file,stringLength);}function skipUnicodeString(file) {var unicodeLength=readBEInt(file,4);skipBytes(file,unicodeLength*2);}function skipId(file) {var idLength=readBEInt(file,4);if(idLength) {skipBytes(file,idLength);} else {skipBytes(file,4);}}function skipClass(file) {skipUnicodeString(file);skipId(file);}function skipObject(file) {skipClass(file);var itemCount=readBEInt(file,4);for(var itemIndex=0;itemIndex<itemCount;itemIndex++) {skipId(file);skipItem(file);}}function skipList(file) {var itemCount=readBEInt(file,4);for(var itemIndex=0;itemIndex<itemCount;itemIndex++) {skipItem(file);}} function skipItem(file) {var typeId=readBytes(file,4);switch(typeId) {case'obj ':skipReference(file);break;case'Objc':case'GlbO':skipObject(file);break;case'type':case'GlbC':skipClass(file);break;case'VlLs':skipList(file);break;case'doub':skipDouble(file);break;case'UntF':skipBytes(file,4);skipDouble(file);break;case'TEXT':skipUnicodeString(file);break;case'enum':skipId(file);skipId(file);break;case'long':skipInt32(file);break;case'comp':skipInt64(file);break;case'bool':skipInt8(file);break;case'alis':skipByteString(file);break;case'Pth ':skipByteString(file);break;case'tdta':skipByteString(file);break;case'ObAr':var objCount=readBEInt(file,4);skipClass(file);var itemCount=readBEInt(file,4);for(var itemIndex=0;itemIndex<itemCount;itemIndex++) {skipId(file);skipInt32(file);skipInt32(file);var doublesCount=readBEInt(file,4);skipDoubles(file,doublesCount);} break;default:throw new Error("[jamActions skipItem] Unrecognized item type: '"+typeId+"'");break;}} function skipReference(file) {var itemCount=readBEInt(file,4);for(var itemIndex=0;itemIndex<itemCount;itemIndex++){var formId=readBytes(file,4);skipClass(file);switch(formId) {case'Clss':break;case'prop':skipId(file);break;case'Enmr':skipId(file);skipId(file);break;case'rele':skipInt32(file);break;case'Idnt':skipInt32(file);break;case'indx':skipInt32(file);break;case'name':skipUnicodeString(file);break;default:throw new Error("[jamActions skipReference] Unrecognized item form: '"+formId+"'");break;}}} jamActions.readActionDescriptor=function(file,insertVersionPrefix) {var versionPrefix="\x00\x00\x00\x10";var start=file.tell();if(!insertVersionPrefix) {if(file.read(4)===versionPrefix) {versionPrefix="";} else {throw new Error('[jamActions.readActionDescriptor] Unrecognized version prefix');}} skipObject(file);var end=file.tell();file.seek(start,0);var stream=versionPrefix+file.read(end-start);var actionDescriptor=new ActionDescriptor();actionDescriptor.fromStream(stream);return actionDescriptor;};jamActions.dataFromActionsFile=function(actionsFile,isPalette) {var that=this;function parseActionSet(file) {var actionSet={};actionSet.name=localize(readUnicodeString(file));actionSet.expanded=(readBEInt(file,1)!==0);var actionCount=readBEInt(file,4);actionSet.actions=[];for(var actionIndex=0;actionIndex<actionCount;actionIndex++) {var action={};action.functionKey=readBEInt(file,2);action.shiftKey=(readBEInt(file,1)!==0);action.commandKey=(readBEInt(file,1)!==0);action.colorIndex=readBEInt(file,2);action.name=localize(readUnicodeString(file));action.expanded=(readBEInt(file,1)!==0);var commandCount=readBEInt(file,4);action.commands=[];for(var commandIndex=0;commandIndex<commandCount;commandIndex++) {var command={};command.expanded=(readBEInt(file,1)!==0);command.enabled=(readBEInt(file,1)!==0);command.withDialog=(readBEInt(file,1)!==0);command.dialogOptions=readBEInt(file,1);command.eventId=readEventId(file);command.dictionaryName=readByteString(file);if(readBEInt(file,4)!==0) {command.actionDescriptor=that.readActionDescriptor(file,true);} action.commands.push(command);} actionSet.actions.push(action);}return actionSet;} var file;if(typeof actionsFile==='string') {file=new File(actionsFile);} else if(actionsFile instanceof File) {file=actionsFile;} else {throw new Error('[jamActions.dataFromActionsFile] Invalid argument');} var fileData;if(file.open("r")) {try {file.encoding='BINARY';var fileVersion=readBEInt(file,4);if(fileVersion===16) {fileData={};fileData.version=fileVersion;if(isPalette) {fileData.actionSets=[];var actionSetCount=readBEInt(file,4);for(var actionSetIndex=0;actionSetIndex<actionSetCount;actionSetIndex++) {fileData.actionSets.push(parseActionSet(file));}}else {fileData.actionSet=parseActionSet(file);}} else {fileData="Unsupported actions file version: "+fileVersion;}} catch(e) {fileData=e.message;} finally {file.close();}} else {fileData="Cannot open file";} return fileData;};jamActions.isLocalPlayCommand=function(command,actionSetName) {var localPlayCommand=null;if(command.eventId===app.stringIDToTypeID("play")) {var targetId=app.stringIDToTypeID("target");if(command.actionDescriptor.hasKey(targetId)) {var localReference=command.actionDescriptor.getReference(targetId);do {try{var desiredClassId=localReference.getDesiredClass();}catch(e){break;} switch(desiredClassId) {case app.stringIDToTypeID("command"):var localCommandIndex=localReference.getIndex()-1;break;case app.stringIDToTypeID("action"):var localActionName=localReference.getName();break;case app.stringIDToTypeID("actionSet"):var localActionSetName=localReference.getName();break;} localReference=localReference.getContainer();} while(localReference);} var continueId=app.stringIDToTypeID("continue");if(command.actionDescriptor.hasKey(continueId)) {var localContinue=command.actionDescriptor.getBoolean(continueId);} if((typeof localActionSetName!=='undefined')&&(localActionSetName===actionSetName)) {localPlayCommand=[localActionName,localCommandIndex,localContinue];}}return localPlayCommand;};jamActions.determineDialogMode=function(command) {var dialogMode;switch(command.dialogOptions) {case 0:dialogMode=command.withDialog?DialogModes.ALL:DialogModes.NO;break;case 2:dialogMode=DialogModes.NO;break;case 1:case 3:dialogMode=DialogModes.ALL;break;}return dialogMode;} var globalCommandHandler=null;jamActions.setCommandHandler=function(commandHandler) {globalCommandHandler=commandHandler;};jamActions.traverseAction=function(actionSet,actionLocator,fromCommandIndex,continuePlay) {function handleCommands(commands) {var commandMax=(continuePlay)?commands.length:fromCommandIndex+1;for(var commandIndex=fromCommandIndex;commandIndex<commandMax;commandIndex++) {if(globalCommandHandler!==null) {globalCommandHandler(commands[commandIndex]);}}} if(typeof fromCommandIndex==='undefined'){fromCommandIndex=0;continuePlay=true;} var actions=actionSet.actions;if(typeof actionLocator==='string') {var actionName=actionLocator;for(var actionIndex=0;actionIndex<actions.length;actionIndex++) {var action=actions[actionIndex];if(action.name===actionName) {handleCommands(action.commands);break;}}}else if(typeof actionLocator==='number') {var actionIndex=actionLocator;if((actionIndex>=0)&&(actionIndex<actions.length)) {handleCommands(actions[actionIndex].commands);}}};}());}//------------------------------------------------------------------------------if(documents.length){Folder.current = new Folder ("~/Desktop/"); //Location of actionset folder.var actionsFilePath = "组 1.atn"; //Name of atn file.var ActionName = "动作 1"; //Name of the action within the action set.var fileData = jamActions.dataFromActionsFile (actionsFilePath);if (typeof fileData === 'string'){alert (fileData + "\n" + "Actions file: “" + actionsFilePath + "”");}else{function executeCommand (command,ActionName){if (command.enabled){var dialogMode = jamActions.determineDialogMode (command);app.executeAction (command.eventId, command.actionDescriptor, dialogMode);}}jamActions.setCommandHandler (executeCommand);jamActions.traverseAction (fileData.actionSet, ActionName);};};
赞 (0)
