2017-02-14 5 views
1

Я использую FabricJS модуль в Nodejs. Существует Canvas, который я пытаюсь экспортировать как jpeg, но это не так (мне сложно). Все, что я получаю, это base64 png данные.Convert base64 png to jpeg image in Nodejs

данных, которая начинается как

data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t..... 

Есть в любом случае в nodejs, что я могу преобразовать это изображение в формате JPEG? Я много искал, но не мог получить решение

ответ

2

Вы можете использовать модуль png-to-jpeg. Если предположить, что «данные» в виде строки:

const fs = require("fs"); 

const pngToJpeg = require('png-to-jpeg'); 
const imgStr = 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t.....'; 

const buffer = new Buffer(imgStr.split(/,\s*/)[1],'base64'); 
pngToJpeg({quality: 90})(buffer).then(output => fs.writeFileSync("./some-file.jpeg", output)); 
+0

Это сделало эту работу. спасибо – Abhinav

-2

Хорошо, потому что я профессионал Googler (только kiding), я нашел что-то для вас, во-первых, вы должны будете установить ATOB for NodeJS, теперь, только использовать его, чтобы декодировать строку base64, как это:

(function() { 
    "use strict"; 

    var atob = require('atob'); 
    var b64 = ; //your base64 string 
    var bin = atob(b64); 
    var fs = require('fs'); 
    fs.writeFile("./test.jpg", bin, function(err) { 
    if(err) { 
     return console.log(err); 
    } 

     console.log("The file was saved!"); 
    }); 
}()); 

на самом деле, я не использую NodeJS, поэтому я не могу сказать вам больше, чем это, я надеюсь, что это решит вашу проблему!

+0

Это полипол для собственной функции atob, которая используется для преобразования строки base64 в двоичную, что не решает проблему, о которой спрашивал OP. –