在Nodejs中将base64 png转换为jpeg图像

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 提出的问题。

以上是关于在Nodejs中将base64 png转换为jpeg图像的主要内容,如果未能解决你的问题,请参考以下文章

在 Javascript 中将 PDF 转换为 Base64 编码的字符串

在 Python 3.9.6 中将 b 字符串转换为 png

在 Python 中将 PNG 转换为二进制(base 2)字符串

在本机反应中将图像转换为base64

在 Flutter 错误中将 base64 转换为图像

如何在 Scriptable App 中将 Base64 转换为图像