0
Ich versuche, 5 spezifische JPG-Dateinamen in ein animiertes GIF zu pipen. Ich habe mehrere Bibliotheken durchgesehen und Gif-Encoder gefunden. Ich bin nicht sehr gut mit Streams. Ich kann nicht herausfinden, wie man das RGB-Ergebnis von der JPEG Decoder in die addFrame() - Methode des Encoders leitet.Pipe mehrere JPGs in ein animiertes GIF mit Knoten JS
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();
}
Es funktioniert ohne gif.read() ... können Sie den Zweck der gif.read() erklären? Ist es nötig? Vielen Dank. – wayofthefuture
Es ist nicht sehr gut dokumentiert in der [gif-encoder Dokumentation] (https://github.com/twolfson/gif-encoder), aber wenn Sie die Dokumentation für das "Fehler" -Ereignis lesen, heißt es 'Emits a Error when interner Puffer ist überschritten. Dies passiert, wenn Sie nicht lesen (entweder über .on ('data') oder .read()) und wir können die vorbereiteten Daten nicht löschen. ' Also, obwohl nicht unbedingt erforderlich, bekam ich Fehler, wenn ich zu viele Bilder verwendete ohne es. – Skabbi