Скриптовете във Photoshop не само предоставят възможност за автоматизиране на повтарящи се действия, но също така ви позволяват да записвате събития, извършени във Photoshop от потребителя в скрипт! Това е много полезно, когато не знаете как да напишете това или онова действие в програмния код.
Както посочих в предишните материали от тази поредица, скриптовете имат редица предимства пред по-лесните за използване Действия, например с помощта на скриптове можете да възпроизвеждате онези операции, които не са по силите ви на действие - това е създаване на файлове с нарастваща номерация, разпознаване по ориентация на изображението, много важна операция за мен - запазване за мрежата и много други.
Забележка. За по-добро разбиране на материала гледайте видеото в долната част на тази страница.
За да може Photoshop да записва своите действия, поставете файла ScriptListener.8li в папката C:Program FilesAdobeAdobe Photoshop CS6Plug-ins или C:Program FilesAdobeAdobe Photoshop CS6 (64 Bit)Plug-ins за 64-битов Photoshop . В по-ранните версии на програмата този файл се намираше в директорията FilesAdobeAdobe Photoshop CS5ScriptingUtilities, а за CS6 ще трябва да бъде изтеглен от официалния уебсайт на програмата или от връзките в долната част на тази страница.
След като добавите файла, рестартирайте програмата. След това изпълнете каквото и да е действие във Photoshop и на вашия работен плот ще се появят два файла - ScriptingListenerJS.log и ScriptingListenerVB.log. В първия от тях събитията се записват на JavaScript, а във втория - на Visual Basic Script.
Използвам JavaScript, така че ще разгледам втората опция по-долу.
И така, преди да записвате събития, отворете файла ScriptingListenerJS.log във всеки текстов редактор, изтрийте всички записи в него и го запазете. След това правете каквото искате във Photoshop.
Например, извърших следните действия, между другото, едно от тези действия - запазване за мрежата - не може да бъде автоматизирано и записано с помощта на обикновени действия:
- създаде нов документ с бял фон 600 x 400px
- запълни го с цвета на преден план по подразбиране - черен
- запазено за мрежата като JPG.webp при 50% качество на работния плот
Сега отварям файла ScriptingListenerJS.log и виждам следния код:
" var idMk=charIDToTypeID ( Mk ); var desc11=нов ActionDescriptor(); var idNw=charIDToTypeID(Nw); var desc12=нов ActionDescriptor(); var idMd=charIDToTypeID(Md); var idRGBM=charIDToTypeID(RGBM); desc12.putClass(idMd, idRGBM); var idWdth=charIDToTypeID(Wdth); var idRlt=charIDToTypeID ( Rlt ); desc12.putUnitDouble( idWdth, idRlt, 600.000000); var idHght=charIDToTypeID(Hght); var idRlt=charIDToTypeID ( Rlt ); desc12.putUnitDouble( idHght, idRlt, 400.000000); var idRslt=charIDToTypeID( Rslt ); var idRsl=charIDToTypeID ( Rsl ); desc12.putUnitDouble( idRslt, idRsl, 72.000000); var idpixelScaleFactor=stringIDToTypeID (pixelScaleFactor); desc12.putDouble( idpixelScaleFactor, 1.000000); var idFl=charIDToTypeID( Fl); var idFl=charIDToTypeID( Fl); var idWht=charIDToTypeID(Wht); desc12.putEnumerated( idFl, idFl, idWht); var idDpth=charIDToTypeID(Dpth); desc12.putInteger( idDpth, 8); var idprofile=stringIDToTypeID (профил); desc12.putString( idprofile, Adobe RGB (1998)); var idDcmn=charIDToTypeID(Dcmn); desc11.putObject( idNw, idDcmn, desc12); executeAction(idMk, desc11, DialogModes.NO);var idFl=charIDToTypeID(Fl); var desc13=нов ActionDescriptor(); var idUsng=charIDToTypeID( Usng); var idFlCn=charIDToTypeID (FlCn); var idFrgC=charIDToTypeID(FrgC); desc13.putEnumerated(idUsng, idFlCn, idFrgC); var idOpct=charIDToTypeID( Opct); var idPrc=charIDToTypeID ( Prc ); desc13.putUnitDouble( idOpct, idPrc, 100.000000); var idMd=charIDToTypeID(Md); var idBlnM=charIDToTypeID(BlnM); var idNrml=charIDToTypeID (Nrml); desc13.putEnumerated( idMd, idBlnM, idNrml); executeAction(idFl, desc13, DialogModes.NO);var idExpr=charIDToTypeID(Expr); var desc14=нов ActionDescriptor(); var idUsng=charIDToTypeID( Usng); var desc15=нов ActionDescriptor(); var idOp=charIDToTypeID ( Op ); var idSWOp=charIDToTypeID( SWOp); var idOpSa=charIDToTypeID ( OpSa ); desc15.putEnumerated( idOp, idSWOp, idOpSa); var idDIDr=charIDToTypeID( DIDr); desc15.putBoolean( idDIDr, true); var idIn=charIDToTypeID ( In ); desc15.putPath ( idIn, нов файл ( C:\Users\Exellent\Desktop)); var idFmt=charIDToTypeID(Fmt); var idIRFm=charIDToTypeID(IRFm); var idJPEG.webp=charIDToTypeID(JPEG.webp); desc15.putEnumerated( idFmt, idIRFm, idJPEG.webp); var idIntr=charIDToTypeID (Intr); desc15.putBoolean (idIntr, false); var idQlty=charIDToTypeID( Qlty); desc15.putInteger( idQlty, 50); var idQChS=charIDToTypeID (QChS); desc15.putInteger( idQChS, 0); var idQCUI=charIDToTypeID (QCUI); desc15.putInteger( idQCUI, 0); var idQChT=charIDToTypeID( QChT); desc15.putBoolean( idQChT, false); var idQChV=charIDToTypeID( QChV); desc15.putBoolean( idQChV, false); var idOptm=charIDToTypeID( Optm); desc15.putBoolean( idOptm, true); var idPass=charIDToTypeID (Пропуск); desc15.putInteger( idPass, 1); var idblur=charIDToTypeID (размазване); desc15.putDouble( idblur, 0.000000); var idEICC=charIDToTypeID( EICC); desc15.putBoolean( idEICC, false); var idMtt=charIDToTypeID(Mtt); desc15.putBoolean( idMtt, true); var idMttR=charIDToTypeID(MttR); desc15.putInteger( idMttR, 255); var idMttG=charIDToTypeID(MttG); desc15.putInteger( idMttG, 255); var idMttB=charIDToTypeID(MttB); desc15.putInteger( idMttB, 255); var idSHTM=charIDToTypeID(SHTM); desc15.putBoolean(idSHTM, false); var idSImg=charIDToTypeID (SImg); desc15.putBoolean( idSImg, true); var idSWsl=charIDToTypeID(SWsl); var idSTsl=charIDToTypeID(STsl); var idSLAl=charIDToTypeID(SLAl); desc15.putEnumerated( idSWsl, idSTsl, idSLAl); var idSWch=charIDToTypeID(SWch); var idSTch=charIDToTypeID(STch); var idCHsR=charIDToTypeID(CHsR); desc15.putEnumerated(idSWch, idSTch, idCHsR); var idSWmd=charIDToTypeID(SWmd); var idSTmd=charIDToTypeID(STmd); var idMDCC=charIDToTypeID(MDCC); desc15.putEnumerated( idSWmd, idSTmd, idMDCC); var idohXH=charIDToTypeID (ohXH); desc15.putBoolean(idohXH, false); var idohIC=charIDToTypeID (ohIC); desc15.putBoolean (idohIC, true); var idohAA=charIDToTypeID( ohAA); desc15.putBoolean(idohAA, true); var idohQA=charIDToTypeID (ohQA); desc15.putBoolean(idohQA, true); var idohCA=charIDToTypeID (ohCA); desc15.putBoolean(idohCA, false); var idohIZ=charIDToTypeID(ohIZ); desc15.putBoolean(idohIZ, true); var idohTC=charIDToTypeID (ohTC); var idSToc=charIDToTypeID(SToc); var idOCzerothree=charIDToTypeID(OC03); desc15.putEnumerated(idohTC, idSToc, idOCzerothree); var idohAC=charIDToTypeID (ohAC); var idSToc=charIDToTypeID(SToc); var idOCzerothree=charIDToTypeID(OC03); desc15.putEnumerated(idohAC, idSToc, idOCzerothree); var idohIn=charIDToTypeID( ohIn); desc15.putInteger (idohIn, -1); var idohLE=charIDToTypeID(ohLE); var idSTle=charIDToTypeID(STle); var idLEzerothree=charIDToTypeID(LE03); desc15.putEnumerated(idohLE, idSTle, idLEzerothree); var idohEn=charIDToTypeID(ohEn); var idSTen=charIDToTypeID(STen); var idENzerozero=charIDToTypeID( EN00); desc15.putEnumerated(idohEn, idSTen, idENzerozero); var idolCS=charIDToTypeID (olCS); desc15.putBoolean(idolCS, false); var idolEC=charIDToTypeID (olEC); var idSTst=charIDToTypeID(STst); var idSTzerozero=charIDToTypeID(ST00); desc15.putEnumerated(idolEC, idSTst, idSTzerozero); var idolWH=charIDToTypeID(olWH); var idSTwh=charIDToTypeID(STwh); var idWHzeroone=charIDToTypeID(WH01); desc15.putEnumerated(idolWH, idSTwh, idWHzeroone); var idolSV=charIDToTypeID (olSV); var idSTsp=charIDToTypeID(STsp); var idSPzerofour=charIDToTypeID(SP04); desc15.putEnumerated(idolSV, idSTsp, idSPzerofour); var idolSH=charIDToTypeID (olSH); var idSTsp=charIDToTypeID(STsp); var idSPzerofour=charIDToTypeID(SP04); desc15.putEnumerated(idolSH, idSTsp, idSPzerofour); var idolNC=charIDToTypeID (olNC); var list1=нов ActionList(); var desc16=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCzerozero=charIDToTypeID(NC00); desc16.putEnumerated(idncTp, idSTnc, idNCzerozero); var idSCnc=charIDToTypeID(SCnc); list1.putObject( idSCnc, desc16); var desc17=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNConenine=charIDToTypeID(NC19); desc17.putEnumerated(idncTp, idSTnc, idNConenine); var idSCnc=charIDToTypeID(SCnc); list1.putObject( idSCnc, desc17); var desc18=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCtwoeight=charIDToTypeID(NC28); desc18.putEnumerated(idncTp, idSTnc, idNCtwoeight); var idSCnc=charIDToTypeID(SCnc); list1.putObject( idSCnc, desc18); var desc19=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCtwofour=charIDToTypeID(NC24); desc19.putEnumerated(idncTp, idSTnc, idNCtwofour); var idSCnc=charIDToTypeID(SCnc); list1.putObject( idSCnc, desc19); var desc20=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCtwofour=charIDToTypeID(NC24); desc20.putEnumerated(idncTp, idSTnc, idNCtwofour); var idSCnc=charIDToTypeID(SCnc); list1.putObject( idSCnc, desc20); var desc21=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCtwofour=charIDToTypeID(NC24); desc21.putEnumerated(idncTp, idSTnc, idNCtwofour); var idSCnc=charIDToTypeID(SCnc); list1.putObject( idSCnc, desc21); desc15.putList(idolNC, list1); var idobIA=charIDToTypeID ( obIA ); desc15.putBoolean (idobIA, false); var idobIP=charIDToTypeID ( obIP ); desc15.putString(idobIP,); var idobCS=charIDToTypeID ( obCS ); var idSTcs=charIDToTypeID(STcs); var idCSzeroone=charIDToTypeID(CS01); desc15.putEnumerated(idobCS, idSTcs, idCSzeroone); var idovNC=charIDToTypeID (ovNC); var list2=нов ActionList(); var desc22=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCzeroone=charIDToTypeID(NC01); desc22.putEnumerated(idncTp, idSTnc, idNCzeroone); var idSCnc=charIDToTypeID(SCnc); list2.putObject( idSCnc, desc22); var desc23=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCtwozero=charIDToTypeID(NC20); desc23.putEnumerated(idncTp, idSTnc, idNCtwozero); var idSCnc=charIDToTypeID(SCnc); списък2.putObject(idSCnc, desc23); var desc24=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCzerotwo=charIDToTypeID(NC02); desc24.putEnumerated(idncTp, idSTnc, idNCzerotwo); var idSCnc=charIDToTypeID(SCnc); list2.putObject( idSCnc, desc24); var desc25=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNConenine=charIDToTypeID(NC19); desc25.putEnumerated(idncTp, idSTnc, idNConenine); var idSCnc=charIDToTypeID(SCnc); list2.putObject( idSCnc, desc25); var desc26=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCzerosix=charIDToTypeID(NC06); desc26.putEnumerated(idncTp, idSTnc, idNCzerosix); var idSCnc=charIDToTypeID(SCnc); list2.putObject( idSCnc, desc26); var desc27=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCtwofour=charIDToTypeID(NC24); desc27.putEnumerated(idncTp, idSTnc, idNCtwofour); var idSCnc=charIDToTypeID(SCnc); list2.putObject( idSCnc, desc27); var desc28=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCtwofour=charIDToTypeID(NC24); desc28.putEnumerated(idncTp, idSTnc, idNCtwofour); var idSCnc=charIDToTypeID(SCnc); list2.putObject( idSCnc, desc28); var desc29=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCtwofour=charIDToTypeID(NC24); desc29.putEnumerated(idncTp, idSTnc, idNCtwofour); var idSCnc=charIDToTypeID(SCnc); list2.putObject( idSCnc, desc29); var desc30=нов ActionDescriptor(); var idncTp=charIDToTypeID (ncTp); var idSTnc=charIDToTypeID (STnc); var idNCtwotwo=charIDToTypeID(NC22); desc30.putEnumerated(idncTp, idSTnc, idNCtwotwo); var idSCnc=charIDToTypeID(SCnc); list2.putObject( idSCnc, desc30); desc15.putList(idovNC, list2); var idovCM=charIDToTypeID (ovCM); desc15.putBoolean(idovCM, false); var idovCW=charIDToTypeID (ovCW); desc15.putBoolean(idovCW, true); var idovCU=charIDToTypeID (ovCU); desc15.putBoolean(idovCU, true); var idovSF=charIDToTypeID (ovSF); desc15.putBoolean(idovSF, true); var idovCB=charIDToTypeID (ovCB); desc15.putBoolean(idovCB, true); var idovSN=charIDToTypeID (ovSN); desc15.putString (idovSN, изображения); var idSaveForWeb=stringIDToTypeID ( SaveForWeb ); desc14.putObject( idUsng, idSaveForWeb, desc15); executeAction(idExpr, desc14, DialogModes.NO); "
Сега нека се уверим, че кодът съдържа точно действията, които направих.
За да направите това, можете да копирате кода, да го запишете във файл с разширение jsx, след което просто да плъзнете този файл в работния прозорец на Photoshop с мишката.
Или отворете редактора на Adobe ExtendScript Toolkit CS6, който е инсталиран при инсталиране на Photoshop CS6, изберете „Adobe Photoshop CS6“ в горния ляв ъгъл, след което щракнете върху бутона „Стартиране на скрипта“ (зелен триъгълник).
Забележка. Във Photoshop CC безплатният ExtendScript Toolkit CC трябва да бъде изтеглен от Adobe Creative Cloud.
Във всеки случай Photoshop ще възпроизведе действията, които току-що записах.
Гледайте видеото по статията:
Изтеглете ScriptListener.8li файлове за Photocsop CS6 и CC за Win32 и win64:Изтеглете от Depositfiles.com