Как я могу получить base64 кадра изображения gif с помощью nodejs?

#node.js #base64 #frame #gif #animated-gif

Вопрос:

Я хотел бы получить код base64 изображения gif из Интернета. Base64 должен быть сгенерирован из первого кадра gif-изображения.

Я могу сохранить первый кадр gif-изображения со следующим кодом в nodejs:

 var gifFrames = require('gif-frames'); var fs = require('fs');   gifFrames({ url: 'https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_(large).gif', frames: 0 }).then(function (frameData) {  frameData[0].getImage().pipe(fs.createWriteStream('firstframe.jpg')); });  

Теперь мне нужен код base64 этого сохраненного изображения jpg. В идеале изображение не будет храниться на диске, а просто напечатает код base64.

Заранее спасибо!

Ответ №1:

Так getImage() как возвращает a ContentStream , вам просто нужно прочитать Buffer и преобразовать его в Base64. Как-то так:

 var gifFrames = require('gif-frames'); var fs = require('fs');  gifFrames({  url: 'https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_(large).gif',  frames: 0 }).then(function (frameData) {  var stream = frameData[0].getImage(),  b64 = stream.read().toString('base64');   console.log(b64); });