【问题标题】:Convert base64 png to jpeg image in Nodejs在Nodejs中将base64 png转换为jpeg图像
【发布时间】:2017-07-02 07:23:31
【问题描述】:

我在 Nodejs 中使用 FabricJS 模块。我正在尝试将 Canvas 导出为jpeg,但它不会(让我很难过)。我得到的只是 base64 png 数据。

开头的数据
data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t.....

在 nodejs 中无论如何我可以将此图像转换为 jpeg 吗?我google了很多,但找不到解决办法

【问题讨论】:

    标签: javascript node.js image fabricjs node-canvas


    【解决方案1】:

    您可以使用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));
    

    【讨论】:

      【解决方案2】:

      好吧,因为我是专业的 Googler(开玩笑?),我为你找到了一些东西,首先,你必须安装 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,所以不能多说,希望能解决你的问题!

      【讨论】:

      • 这是原生 atob 函数的 polyfill,用于将 base64 字符串转换为二进制,但不能解决 OP 提出的问题。
      猜你喜欢
      • 1970-01-01
      • 2017-09-12
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 2022-12-25
      相关资源
      最近更新 更多