javascript - 使用 Node JS 将多个 JPG 转换为动画 GIF

标签 javascript node.js encoding stream animated-gif

我正在尝试将 5 个特定的 JPG 文件名通过管道传输到动画 GIF 中。我浏览了几个图书馆并找到了 Gif-Encoder .我不太擅长流。我似乎无法弄清楚如何通过管道传输来自 JPEG Decoder 的 RGB 结果。进入编码器的 addFrame() 方法。

function createAnimatedGif(jpgPaths, animatedGifPath) {
    let encoder = new GifEncoder(1280, 720);

    let writeStream = fs.createWriteStream(animatedGifPath);
    encoder.pipe(writeStream);
    encoder.writeHeader();

    jpgPaths.forEach(filePath => {
        fs.createReadStream(filePath)
            .pipe(new JPEGDecoder)
            //.pipe(encoder);
            //.pipe(pixels => encoder.addFrame(pixels));
    });

    encoder.finish();
}

最佳答案

必须使用读取流吗?我使用模块“get-pixels”取得了一些成功。

var getPixels = require('get-pixels')
var GifEncoder = require('gif-encoder');
var gif = new GifEncoder(1280, 720);
var file = require('fs').createWriteStream('img.gif');
var pics = ['./pics/1.jpg', './pics/2.jpg', './pics/3.jpg'];

gif.pipe(file);
gif.setQuality(20);
gif.setDelay(1000);
gif.writeHeader();

var addToGif = function(images, counter = 0) {
  getPixels(images[counter], function(err, pixels) {
    gif.addFrame(pixels.data);
    gif.read();
    if (counter === images.length - 1) {
      gif.finish();
    } else {
      addToGif(images, ++counter);
    }
  })
}
addToGif(pics);

关于javascript - 使用 Node JS 将多个 JPG 转换为动画 GIF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42798219/

相关文章:

javascript - 使绝对定位的 div 下方的元素可点击

javascript - 减少加载大哈希表的正确方法

node.js - 无法本地启动heroku

带有汉字的Java源文件编码

c# - 智能 HTML 编码

python - 使用 Python 搜索 Unicode 文件

javascript - 单击其他 div 时触发对不同元素的单击

javascript - 如何在 jquery 中使用音频标签自动播放音乐?

javascript - Object.create(Function.prototype) => 创建继承属性的 Function

javascript - 使用 Lambda 查询 DynamoDB 没有任何作用