Scriptlistener: scripting save as GIF with loop endless and file name as layer name
I have script to export to animated GIF that gives
the file name after the name of the selected Photoshop layer.
It works fine but Looping options is always
set to "ONCE". I need looping to be set "FOREVER".
To solve the problem I am trying to use scriptlistener.
The scriptlistener produces proper .GIF with loop
endless BUT I cannot integrate it properly into
my script that sets the name of the file as
the name of the currently selected layer.
I think the problem is that with scriptlistener
I am using Save For WEB to produce GIF file with
Looping Options: forever. So it just overrides
the file name with new always the same name!
Is there any other way to set loop forever except
Save For WEB function? What should I log by scriptlistener?
Or how I can use scriptlistener's log in this my script?
PLEASE HELP!!!
WOULD BE VERY GRATEFULL!!!
------- here is my script -----------
#target photoshop
main();
function main(){
if(!documents.length) return;
try{
var Path= activeDocument.path;
}catch(e){var Path = "~/desktop";}
var Name = decodeURI(app.activeDocument.name).replace(/\.[^\.]+$/, '');
var layerName = app.activeDocument.activeLayer.name.replace(/[:\/\\*\?\"\<\>\|]/g, "_");
var saveFile= new File(Path + "/" + Name + "-" + layerName + ".gif");
SaveForWeb(saveFile);
}
function SaveForWeb(saveFile) {
var sfwOptions = new ExportOptionsSaveForWeb();
sfwOptions.format = SaveDocumentType.COMPUSERVEGIF;
sfwOptions.includeProfile = false;
sfwOptions.interlaced = 1;
sfwOptions.optimized = true;
sfwOptions.transparency = 1;
sfwOptions.ColorReductionType = ColorReductionType.SELECTIVE;
sfwOptions.dither = Dither.NONE;
sfwOptions.ditherAmount = 80;
sfwOptions.webSnap = 0;
sfwOptions.colors = 128;
activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB, sfwOptions);
}
--------- END of my script -------------------
----------here is
#target photoshop
main();
function main(){
if(!documents.length) return;
try{
var Path= activeDocument.path;
}catch(e){var Path = "~/desktop";}
var Name = decodeURI(app.activeDocument.name).replace(/\.[^\.]+$/, '');
var layerName = app.activeDocument.activeLayer.name.replace(/[:\/\\*\?\"\<\>\|]/g, "_");
var saveFile= new File(Path + "/" + Name + "-" + layerName + ".gif");
makeGif(saveFile);
}
function makeGif(saveFile){
// =======================================================
var idExpr = charIDToTypeID( "Expr" );
var desc3 = new ActionDescriptor();
var idUsng = charIDToTypeID( "Usng" );
var desc4 = new ActionDescriptor();
var idOp = charIDToTypeID( "Op " );
var idSWOp = charIDToTypeID( "SWOp" );
var idOpSa = charIDToTypeID( "OpSa" );
desc4.putEnumerated( idOp, idSWOp, idOpSa );
var idDIDr = charIDToTypeID( "DIDr" );
desc4.putBoolean( idDIDr, true );
var idIn = charIDToTypeID( "In " );
desc4.putPath( idIn, new File( "D:\\==Result\\10-10" ) );
var idovFN = charIDToTypeID( "ovFN" );
desc4.putString( idovFN, saveFile );//new line
// desc4.putString( idovFN, """capricia2.gif""" ); Old line
var idFmt = charIDToTypeID( "Fmt " );
var idIRFm = charIDToTypeID( "IRFm" );
var idGIFf = charIDToTypeID( "GIFf" );
desc4.putEnumerated( idFmt, idIRFm, idGIFf );
var idIntr = charIDToTypeID( "Intr" );
desc4.putBoolean( idIntr, true );
var idRedA = charIDToTypeID( "RedA" );
var idIRRd = charIDToTypeID( "IRRd" );
var idSltv = charIDToTypeID( "Sltv" );
desc4.putEnumerated( idRedA, idIRRd, idSltv );
var idRChT = charIDToTypeID( "RChT" );
desc4.putBoolean( idRChT, false );
var idRChV = charIDToTypeID( "RChV" );
desc4.putBoolean( idRChV, false );
var idAuRd = charIDToTypeID( "AuRd" );
desc4.putBoolean( idAuRd, false );
var idNCol = charIDToTypeID( "NCol" );
desc4.putInteger( idNCol, 128 );
var idDChS = charIDToTypeID( "DChS" );
desc4.putInteger( idDChS, 0 );
var idDCUI = charIDToTypeID( "DCUI" );
desc4.putInteger( idDCUI, 0 );
var idDChT = charIDToTypeID( "DChT" );
desc4.putBoolean( idDChT, false );
var idDChV = charIDToTypeID( "DChV" );
desc4.putBoolean( idDChV, false );
var idWebS = charIDToTypeID( "WebS" );
desc4.putInteger( idWebS, 0 );
var idTDth = charIDToTypeID( "TDth" );
var idIRDt = charIDToTypeID( "IRDt" );
var idPtrn = charIDToTypeID( "Ptrn" );
desc4.putEnumerated( idTDth, idIRDt, idPtrn );
var idTDtA = charIDToTypeID( "TDtA" );
desc4.putInteger( idTDtA, 100 );
var idLoss = charIDToTypeID( "Loss" );
desc4.putInteger( idLoss, 0 );
var idLChS = charIDToTypeID( "LChS" );
desc4.putInteger( idLChS, 0 );
var idLCUI = charIDToTypeID( "LCUI" );
desc4.putInteger( idLCUI, 100 );
var idLChT = charIDToTypeID( "LChT" );
desc4.putBoolean( idLChT, false );
var idLChV = charIDToTypeID( "LChV" );
desc4.putBoolean( idLChV, false );
var idTrns = charIDToTypeID( "Trns" );
desc4.putBoolean( idTrns, true );
var idMtt = charIDToTypeID( "Mtt " );
desc4.putBoolean( idMtt, false );
var idDthr = charIDToTypeID( "Dthr" );
var idIRDt = charIDToTypeID( "IRDt" );
var idNone = charIDToTypeID( "None" );
desc4.putEnumerated( idDthr, idIRDt, idNone );
var idDthA = charIDToTypeID( "DthA" );
desc4.putInteger( idDthA, 54 );
var idMttR = charIDToTypeID( "MttR" );
desc4.putInteger( idMttR, 255 );
var idMttG = charIDToTypeID( "MttG" );
desc4.putInteger( idMttG, 255 );
var idMttB = charIDToTypeID( "MttB" );
desc4.putInteger( idMttB, 255 );
var idSHTM = charIDToTypeID( "SHTM" );
desc4.putBoolean( idSHTM, false );
var idSImg = charIDToTypeID( "SImg" );
desc4.putBoolean( idSImg, true );
var idSWsl = charIDToTypeID( "SWsl" );
var idSTsl = charIDToTypeID( "STsl" );
var idSLAl = charIDToTypeID( "SLAl" );
desc4.putEnumerated( idSWsl, idSTsl, idSLAl );
var idSWch = charIDToTypeID( "SWch" );
var idSTch = charIDToTypeID( "STch" );
var idCHsR = charIDToTypeID( "CHsR" );
desc4.putEnumerated( idSWch, idSTch, idCHsR );
var idSWmd = charIDToTypeID( "SWmd" );
var idSTmd = charIDToTypeID( "STmd" );
var idMDCp = charIDToTypeID( "MDCp" );
desc4.putEnumerated( idSWmd, idSTmd, idMDCp );
var idohXH = charIDToTypeID( "ohXH" );
desc4.putBoolean( idohXH, false );
var idohIC = charIDToTypeID( "ohIC" );
desc4.putBoolean( idohIC, true );
var idohAA = charIDToTypeID( "ohAA" );
desc4.putBoolean( idohAA, true );
var idohQA = charIDToTypeID( "ohQA" );
desc4.putBoolean( idohQA, true );
var idohCA = charIDToTypeID( "ohCA" );
desc4.putBoolean( idohCA, false );
var idohIZ = charIDToTypeID( "ohIZ" );
desc4.putBoolean( idohIZ, true );
var idohTC = charIDToTypeID( "ohTC" );
var idSToc = charIDToTypeID( "SToc" );
var idOCzerothree = charIDToTypeID( "OC03" );
desc4.putEnumerated( idohTC, idSToc, idOCzerothree );
var idohAC = charIDToTypeID( "ohAC" );
var idSToc = charIDToTypeID( "SToc" );
var idOCzerothree = charIDToTypeID( "OC03" );
desc4.putEnumerated( idohAC, idSToc, idOCzerothree );
var idohIn = charIDToTypeID( "ohIn" );
desc4.putInteger( idohIn, -1 );
var idohLE = charIDToTypeID( "ohLE" );
var idSTle = charIDToTypeID( "STle" );
var idLEzerothree = charIDToTypeID( "LE03" );
desc4.putEnumerated( idohLE, idSTle, idLEzerothree );
var idohEn = charIDToTypeID( "ohEn" );
var idSTen = charIDToTypeID( "STen" );
var idENzerozero = charIDToTypeID( "EN00" );
desc4.putEnumerated( idohEn, idSTen, idENzerozero );
var idolCS = charIDToTypeID( "olCS" );
desc4.putBoolean( idolCS, false );
var idolEC = charIDToTypeID( "olEC" );
var idSTst = charIDToTypeID( "STst" );
var idSTzerozero = charIDToTypeID( "ST00" );
desc4.putEnumerated( idolEC, idSTst, idSTzerozero );
var idolWH = charIDToTypeID( "olWH" );
var idSTwh = charIDToTypeID( "STwh" );
var idWHzeroone = charIDToTypeID( "WH01" );
desc4.putEnumerated( idolWH, idSTwh, idWHzeroone );
var idolSV = charIDToTypeID( "olSV" );
var idSTsp = charIDToTypeID( "STsp" );
var idSPzerofour = charIDToTypeID( "SP04" );
desc4.putEnumerated( idolSV, idSTsp, idSPzerofour );
var idolSH = charIDToTypeID( "olSH" );
var idSTsp = charIDToTypeID( "STsp" );
var idSPzerofour = charIDToTypeID( "SP04" );
desc4.putEnumerated( idolSH, idSTsp, idSPzerofour );
var idolNC = charIDToTypeID( "olNC" );
var list1 = new ActionList();
var desc5 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCzerozero = charIDToTypeID( "NC00" );
desc5.putEnumerated( idncTp, idSTnc, idNCzerozero );
var idSCnc = charIDToTypeID( "SCnc" );
list1.putObject( idSCnc, desc5 );
var desc6 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNConenine = charIDToTypeID( "NC19" );
desc6.putEnumerated( idncTp, idSTnc, idNConenine );
var idSCnc = charIDToTypeID( "SCnc" );
list1.putObject( idSCnc, desc6 );
var desc7 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCtwoeight = charIDToTypeID( "NC28" );
desc7.putEnumerated( idncTp, idSTnc, idNCtwoeight );
var idSCnc = charIDToTypeID( "SCnc" );
list1.putObject( idSCnc, desc7 );
var desc8 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCtwofour = charIDToTypeID( "NC24" );
desc8.putEnumerated( idncTp, idSTnc, idNCtwofour );
var idSCnc = charIDToTypeID( "SCnc" );
list1.putObject( idSCnc, desc8 );
var desc9 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCtwofour = charIDToTypeID( "NC24" );
desc9.putEnumerated( idncTp, idSTnc, idNCtwofour );
var idSCnc = charIDToTypeID( "SCnc" );
list1.putObject( idSCnc, desc9 );
var desc10 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCtwofour = charIDToTypeID( "NC24" );
desc10.putEnumerated( idncTp, idSTnc, idNCtwofour );
var idSCnc = charIDToTypeID( "SCnc" );
list1.putObject( idSCnc, desc10 );
desc4.putList( idolNC, list1 );
var idobIA = charIDToTypeID( "obIA" );
desc4.putBoolean( idobIA, false );
var idobIP = charIDToTypeID( "obIP" );
desc4.putString( idobIP, """""" );
var idobCS = charIDToTypeID( "obCS" );
var idSTcs = charIDToTypeID( "STcs" );
var idCSzeroone = charIDToTypeID( "CS01" );
desc4.putEnumerated( idobCS, idSTcs, idCSzeroone );
var idovNC = charIDToTypeID( "ovNC" );
var list2 = new ActionList();
var desc11 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCzeroone = charIDToTypeID( "NC01" );
desc11.putEnumerated( idncTp, idSTnc, idNCzeroone );
var idSCnc = charIDToTypeID( "SCnc" );
list2.putObject( idSCnc, desc11 );
var desc12 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCtwozero = charIDToTypeID( "NC20" );
desc12.putEnumerated( idncTp, idSTnc, idNCtwozero );
var idSCnc = charIDToTypeID( "SCnc" );
list2.putObject( idSCnc, desc12 );
var desc13 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCzerotwo = charIDToTypeID( "NC02" );
desc13.putEnumerated( idncTp, idSTnc, idNCzerotwo );
var idSCnc = charIDToTypeID( "SCnc" );
list2.putObject( idSCnc, desc13 );
var desc14 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNConenine = charIDToTypeID( "NC19" );
desc14.putEnumerated( idncTp, idSTnc, idNConenine );
var idSCnc = charIDToTypeID( "SCnc" );
list2.putObject( idSCnc, desc14 );
var desc15 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCzerosix = charIDToTypeID( "NC06" );
desc15.putEnumerated( idncTp, idSTnc, idNCzerosix );
var idSCnc = charIDToTypeID( "SCnc" );
list2.putObject( idSCnc, desc15 );
var desc16 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCtwofour = charIDToTypeID( "NC24" );
desc16.putEnumerated( idncTp, idSTnc, idNCtwofour );
var idSCnc = charIDToTypeID( "SCnc" );
list2.putObject( idSCnc, desc16 );
var desc17 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCtwofour = charIDToTypeID( "NC24" );
desc17.putEnumerated( idncTp, idSTnc, idNCtwofour );
var idSCnc = charIDToTypeID( "SCnc" );
list2.putObject( idSCnc, desc17 );
var desc18 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCtwofour = charIDToTypeID( "NC24" );
desc18.putEnumerated( idncTp, idSTnc, idNCtwofour );
var idSCnc = charIDToTypeID( "SCnc" );
list2.putObject( idSCnc, desc18 );
var desc19 = new ActionDescriptor();
var idncTp = charIDToTypeID( "ncTp" );
var idSTnc = charIDToTypeID( "STnc" );
var idNCtwotwo = charIDToTypeID( "NC22" );
desc19.putEnumerated( idncTp, idSTnc, idNCtwotwo );
var idSCnc = charIDToTypeID( "SCnc" );
list2.putObject( idSCnc, desc19 );
desc4.putList( idovNC, list2 );
var idovCM = charIDToTypeID( "ovCM" );
desc4.putBoolean( idovCM, false );
var idovCW = charIDToTypeID( "ovCW" );
desc4.putBoolean( idovCW, true );
var idovCU = charIDToTypeID( "ovCU" );
desc4.putBoolean( idovCU, true );
var idovSF = charIDToTypeID( "ovSF" );
desc4.putBoolean( idovSF, true );
var idovCB = charIDToTypeID( "ovCB" );
desc4.putBoolean( idovCB, true );
var idovSN = charIDToTypeID( "ovSN" );
desc4.putString( idovSN, """images""" );
var idSaveForWeb = stringIDToTypeID( "SaveForWeb" );
desc3.putObject( idUsng, idSaveForWeb, desc4 );
executeAction( idExpr, desc3, DialogModes.NO );
}
------- END of scriptlistener ---------------
