如何使用NodeJs实现base64和png文件相互转换
最近在做一个可视化平台,有一个需求将画布内容自动保存到服务器端,在这里做下简单的记录。
# 将 base64 转换为图片文件
创建 Buffer
c类整数数组,JavaScript
语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时(base64即文件流),必须使用到二进制数据。因此在 Node.js
中,定义了一个 Buffer
类,该类用来创建一个专门存放二进制数据的缓存区。
常用,例如:
const buf = Buffer.from(string, encoding); // 返回一个被 string,编码格式是base64(默认编码格式是utf-8)的值初始化的新的 Buffer 实例
buf.toJSON(); // 转换为JSON对象
buf.write(string, offset, length, encoding) // 写入node缓存区
buf.toString(encoding, start, end) // 从缓存区读取数据
1
2
3
4
2
3
4
这里以png文件为例
const fs = require('fs');
const path = 'xxx/'+ Date.now() +'.png';
const base64 = data.replace(/^data:image\/\w+;base64,/,""); //去掉图片base64码前面部分data:image/png;base64
// new Buffer 操作权限太大,v6.0后使用Buffer.from()创建构造函数
const dataBuffer = new Buffer(base64, 'base64'); //把base64码转成buffer对象,
fs.writeFile(path, dataBuffer, function(err){//用fs写入文件
if(err){
console.log(err);
}else{
console.log('写入成功!');
}
})
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 将图片文件转换成base64
let fileUrl = "xxx/xx/xx.png" //文件路径
const fs = require("fs");
const util = require("util");
const imageData = await util.promisify(fs.readFileSync(fileUrl));
const imageBase64 = imageData.toString("base64");
const imagePrefix = "data:image/png;base64,";
console.log(imagePrefix + imageBase64);
1
2
3
4
5
6
7
2
3
4
5
6
7
# nodejs将任意文件转换为base64格式
很多图片音频等文件,有时候可能需要读取到数据中或者放到单文件的html
中时,将它们转换成为base64
格式是一个好方法,nodejs
可以很方便的把文件转换为base64
格式,需要依赖库fs
,path
,mime-types
,库 mime-types
可通过 npm
安装,具体的代码如下:
const fs = require('fs');
const path = require('path');
const minetype = require('mime-types');
let filepath = path.resolve('your/file/path');
let data = fs.readfilesync(filepath);
data = new buffer(data).tostring('base64');
let base64 = 'data:' + minetype.lookup(filepath) + ';base64,' + data;
fs.writefilesync(path.resolve('your/save/file/path'), base64);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
上次更新: 2024/01/30, 00:35:17
- 01
- linux 在没有 sudo 权限下安装 Ollama 框架12-23
- 02
- Express 与 vue3 使用 sse 实现消息推送(长连接)12-20