前天浏览技术博客,看到大厂面试题型中有使用nodejs实现base64和图片文件相互转换的例子,刚好近期要开发这个功能,暂时记录下来,下周开发完成再做一个补充。
1. 将base64 转换为图片文件,这里举例用的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('写入成功!'); } })
创建Buffer
类型:类整数数组
原因: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) // 从缓存区读取数据
2.将图片文件转换成base64
const fs = require("fs"); const util = require("util"); const imageData = await util.promisify(fs.readFileSync(fileUrl)); // 例:xxx/xx/xx.png const imageBase64 = imageData.toString("base64"); const imagePrefix = "data:image/png;base64,"; console.log(imagePrefix + imageBase64);
知识点补充: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);
在你保存的文件中就有该文件的base64格式数据了,实际使用中可以直接使用转换的base64数据,然后可以放到img、audio或者video标签上使用。
总结
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年11月25日
2024年11月25日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]