使用Node.js实现base64和png文件相互转换的方法


Posted in Javascript onMarch 11, 2020

前天浏览技术博客,看到大厂面试题型中有使用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标签上使用。

总结

到此这篇关于使用Node.js实现base64和png文件相互转换的文章就介绍到这了,更多相关nodejs base64和png转换内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery遍历input取得input的name
Apr 27 Javascript
无刷新预览所选择的图片示例代码
Apr 02 Javascript
node.js中的http.response.setHeader方法使用说明
Dec 14 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
Jul 15 Javascript
js实现上传文件添加和删除文件选择框
Oct 24 Javascript
js数组与字符串常用方法总结
Jan 13 Javascript
JS操作input标签属性checkbox全选的实现代码
Mar 02 Javascript
从零开始学习搭建React脚手架项目
Aug 23 Javascript
Element输入框带历史查询记录的实现示例
Jan 15 Javascript
vue中动态select的使用方法示例
Oct 28 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
vue实现防抖的实例代码
Jan 11 Vue.js
vue 移动端记录页面浏览位置的方法
Mar 11 #Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 #Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
Mar 10 #Javascript
jquery实现烟花效果(面向对象)
Mar 10 #jQuery
非常漂亮的js烟花效果
Mar 10 #Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 #Javascript
微信小程序实现搜索功能
Mar 10 #Javascript
You might like
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
PHP如何抛出异常处理错误
2011/03/02 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
php中错误处理操作实例分析
2019/08/23 PHP
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
JS二分查找算法详解
2017/11/01 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
python基础教程之数字处理(math)模块详解
2014/03/25 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
Python2随机数列生成器简单实例
2017/09/04 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
What is EJB
2016/07/22 面试题
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
《开国大典》教学反思
2014/04/19 职场文书
食品安全宣传标语
2014/06/07 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
小学四年级作文之写景
2019/08/23 职场文书
创业计划书之电动车企业
2019/10/11 职场文书