Orchid_Forever

Save A Photoshop Timeline to Gifs

Apr 12th, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function savetimeline(layerNode) {    
  2.     try{
  3.         var Path= activeDocument.path;
  4.         }catch(e){var Path = "C:/desktop/gif";}
  5.     var Name = decodeURI(app.activeDocument.name).replace(/\.[^\.]+$/, '');
  6.     for (var i=0; i<layerNode.length; i++) {
  7.         if(layerNode[i].layerSets>0 && layerNode[i].name != "MINE")    
  8.             savetimeline(layerNode[i].layerSets);
  9.         for(var layerIndex=0; layerIndex < layerNode[i].artLayers.length; layerIndex++) {
  10.             var savedState = app.activeDocument.activeHistoryState;
  11.             var layer=layerNode[i].artLayers[layerIndex];
  12.                 var index=0;
  13.                 do {
  14.                     if(index >= layerNode[i].artLayers.length){
  15.                         index = 0;
  16.                     }
  17.                     if(layer.name == layerNode[i].artLayers[index].name){
  18.  
  19.                     } else {
  20.                         if(layerNode[i].artLayers[index].length==undefined && layerNode[i].artLayers[index].name != "MINE")
  21.                             layerNode[i].artLayers[index].remove();
  22.                     }
  23.                     index++;
  24.                 } while (layerNode[i].artLayers.length != 1);
  25.                 var layerName = layer.name.replace(/[:\/\\*\?\"\<\>\|]/g, "_");
  26.                 var saveFile= new File(Path + "/" + Name + "-" + layerName + ".gif");
  27.                 SaveForWeb(saveFile);
  28.                 app.activeDocument.activeHistoryState = savedState;
  29.             }
  30.     }
  31. }
  32.  
  33. function SaveForWeb(file){
  34.    
  35.             var d = new ActionDescriptor()
  36.    
  37.             d.putEnumerated( charIDToTypeID( "Op  " ), charIDToTypeID( "SWOp" ), charIDToTypeID( "OpSa" ) ); // Save
  38.             d.putPath( charIDToTypeID( "In  " ), file );
  39.             d.putEnumerated( charIDToTypeID( "Fmt " ), charIDToTypeID( "IRFm" ), charIDToTypeID( "GIFf" ) ); // GIF format
  40.    
  41.             d.putBoolean( charIDToTypeID( "Intr" ), false ); // Interlaced
  42.    
  43.             d.putEnumerated( charIDToTypeID( "RedA" ), charIDToTypeID( "IRRd" ), charIDToTypeID( "Sltv" ) ); // Colors Rreduction Type
  44.  
  45.             d.putBoolean( charIDToTypeID( "RChT" ), false ); // colors reduction Use All Text Layers
  46.             d.putBoolean( charIDToTypeID( "RChV" ), false ); // colors reduction Use All Vector Shape Layers
  47.             d.putBoolean( charIDToTypeID( "AuRd" ), false ); // colors reduction Auto
  48.             d.putInteger( charIDToTypeID( "NCol" ), 256 );
  49.    
  50.             // d.putEnumerated( charIDToTypeID( "Dthr" ), charIDToTypeID( "IRDt" ), charIDToTypeID( "None" ) ); // Dither type
  51.             d.putData( charIDToTypeID( "Dthr" ), "DITHER.Diffusion" ); // Dither type
  52.             d.putInteger( charIDToTypeID( "DthA" ), 100 ); // Dither amount
  53.    
  54.             d.putInteger( charIDToTypeID( "DChS" ), 0 );     // Diffusion Dither min if Use
  55.             d.putInteger( charIDToTypeID( "DCUI" ), 100 );     // Diffusion Dither max if Use
  56.             d.putBoolean( charIDToTypeID( "DChT" ), false ); // Diffusion Dither Use All Text Layers        
  57.             d.putBoolean( charIDToTypeID( "DChV" ), false ); // Diffusion Dither Use All Vector Shape Layers
  58.    
  59.             d.putInteger( charIDToTypeID( "WebS" ), 0 ); // Web Snap
  60.    
  61.             d.putEnumerated( charIDToTypeID( "TDth" ), charIDToTypeID( "IRDt" ), charIDToTypeID( "None" ) ); // Trancparency dither type
  62.             d.putInteger( charIDToTypeID( "TDtA" ), 0 ); // Trancparency diffusion dither amount;
  63.    
  64.             d.putInteger( charIDToTypeID( "Loss" ), 0 ); // Lossy amount
  65.    
  66.             d.putInteger( charIDToTypeID( "LChS" ), 0   );   // lossiness min
  67.             d.putInteger( charIDToTypeID( "LCUI" ), 100 );   // lossiness max
  68.             d.putBoolean( charIDToTypeID( "LChT" ), false ); // lossiness Use All Text Layers        
  69.             d.putBoolean( charIDToTypeID( "LChV" ), false ); // lossiness Use All Vector Shape Layers
  70.    
  71.             d.putBoolean( charIDToTypeID( "Trns" ), true );  // Trancparency
  72.    
  73.             d.putBoolean( charIDToTypeID( "Mtt " ), true ); // Matte
  74.             d.putInteger( charIDToTypeID( "MttR" ), 255 );   // Matte R
  75.             d.putInteger( charIDToTypeID( "MttG" ), 255 );   // Matte G
  76.             d.putInteger( charIDToTypeID( "MttB" ), 255 );   // Matte B
  77.    
  78.             var d0 = new ActionDescriptor();
  79.             d0.putObject( charIDToTypeID( "Usng" ), stringIDToTypeID( "SaveForWeb" ), d );
  80.             executeAction( charIDToTypeID( "Expr" ), d0, DialogModes.NO );
  81.    
  82.     }
  83.  
  84.     savetimeline(app.activeDocument.layerSets);
Add Comment
Please, Sign In to add comment