我正在尝试将5个特定的JPG文件名导入到一个动画GIF中。我查看了几个库,发现Gif-Encoder。我不太擅长流。我似乎无法弄清楚如何将JPEG解码器的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();
}
当内部缓冲区超出限制时会发出错误。这将在您未读取数据(无论是通过.on('data')还是.read())且无法刷新准备好的数据时发生。
所以虽然不是严格必需的,但我使用太多图像时会遇到错误。 - Skabbi