@Kyrill356

Как из jsx скрипта в Photoshop запустить Gifsicle и сконвертировать GIF файл ПОСЛЕ ТОГО, КАК этот скрипт записал этот GIF файл на диск?

Мой jsx скрипт (ниже) сохраняет анимированные .gif файлы из Photoshop (добавляя к имени файла имя текущего слоя).
Но, с одним повторением Loop = 1. А мне нужно, чтобы он бесконечно повторялся, т.е. Loop=forever.

Сохранение прямо из Photoshop с Loop=forever не подходит, поскольку для этого мне надо переводить всю анимацию из timelline в frame animation. А при этом у меня все эффекты и прочие красотизмы теряются.

Есть программка Gifsicle www.lcdf.org/gifsicle Работает из командной строки и делает все, что надо из GIF.
В моем случае, конвертит Gif с loop=1 в Gif с loop=forever.

ВОПРОС ДИЛЛЕТАНТА: возможно ли из jsx скрипта в Photoshop запустить Gifsicle и сконвертировать GIF файл ПОСЛЕ ТОГО, КАК этот скрипт записал этот GIF файл на диск?

Если, да, помогите, пожалуйста, вставить таким образом строчку
C://gifsicle.exe --batch --loop=forever −−careful *.gif
в этот скрипт:

#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);
}


Буду крайне признателен!
  • Вопрос задан
  • 256 просмотров
Решения вопроса 1
larisamoroz
@larisamoroz
Курю маны, втыкаю в код, ваяю, починяю.
var objShell = new ActiveXObject("shell.application");
objShell.ShellExecute("gifsicle.exe", "--batch --loop=forever −−careful C:\\gifs\\*.gif", "C:\\");


Последний параметр "C:\\" в ShellExecute — это папка, где находится gifsicle.exe
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы