首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用代码调用Gifsicle命令将PNG转换为动画Gif

用代码调用Gifsicle命令将PNG转换为动画Gif
EN

Stack Overflow用户
提问于 2016-01-10 12:58:25
回答 1查看 1.7K关注 0票数 0

在为Sketch开发插件时,我需要通过吉非斯命令运行JavaScript。尝试将PNG图像序列转换为动画GIF。

  1. 首先,我创建临时文件夹表单图像(作品)
  2. 然后运行OSX sips命令使PNG到GIF转换过程,得到单个GIF文件(works)。
  3. 然后尝试使用吉非斯命令从文件夹中的单个GIF文件中生成动画GIF。我只从吉夫斯那里得到了空的动画GIF文件。(失败)

这是代码:

代码语言:javascript
复制
function convertPngToGif (exportFileName, exportFolder) {

// Create Temporary folder for conversion process
var fileManager = NSFileManager.defaultManager();
var uniqueID = NSProcessInfo.processInfo().globallyUniqueString();
var tmpPathUrl = NSTemporaryDirectory();
var tmpFolder = tmpPathUrl.stringByAppendingPathComponent(uniqueID);
fileManager.createDirectoryAtPath_withIntermediateDirectories_attributes_error(tmpFolder, true, null, null);

// Path to gifsicle
var gifConverter = utils.scriptLibraryPath + "/gifsicle";

// Create bash arguments
var convertGifImages = "find \"" + exportFolder + "\" -name '*.png' -exec sips -s format gif -o \"" + tmpFolder + "\" {}.gif {} \\;"
var convertGifAnimation = "find \"" + tmpFolder + "\" -name '*.gif' -execdir bash -c '\"" + gifConverter + "\" --delay=10 '*.gif' > \"" + exportFolder + '/' + exportFileName + '.gif' + "\"' \\;"

var convertTask = NSTask.alloc().init();
var createTask = NSTask.alloc().init();

// Create GIF Image Sequence from exist PNG images
convertTask.setLaunchPath("/bin/bash");
convertTask.setArguments(["-c", convertGifImages]);
convertTask.launch();
convertTask.waitUntilExit();

// Create GIF animation from converted images
createTask.setLaunchPath("/bin/bash");
createTask.setArguments(["-c", convertGifAnimation]);
createTask.launch();
createTask.waitUntilExit();

// Remove temporary folder
fileManager.removeItemAtPath_error_(tmpFolder, null);
}

注意:在测试时:我尝试过吉非斯命令。它不使用output '-o‘命令创建空文件,而是使用'>’创建空文件.

通过终端,它工作

我已经尝试通过终端手动执行整个命令,因为它出现在函数字符串中,它正确地创建了动画GIF:

代码语言:javascript
复制
find "/GifImagesFolder/" -name '*.gif' -exec "/GifSicleFolder/gifsicle" --delay=10 *.gif -o "/OutputFolder/Example.gif" \;

我想这与bash命令有关,因为它通过终端工作,而不是通过代码工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-10 16:55:20

已经有一个名为生成-GIF for Sketch的插件,它使用这个PNG来动画GIF工作流并使用吉非斯。我再次测试了它,但是在Sketch 3.4.2版本中,它对我来说都不起作用了。因此我意识到我使用了旧的AppStrore版本,因为Sketch不久前离开了AppStore。在更新到新的Sketch 3.4.4版本后,一切都正常工作。我不确定这是否是实际的问题,因为我记得我以前已经在Sketch中使用过GIF导出。

不管怎样,正确的答案就在问题的范围内。很抱歉让人感到困惑,但如果被同样的问题困扰的话,这可能还是有帮助的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34705635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档