使用Node.js实现base64和png文件相互转换的方法
前天浏览技术博客,看到大厂面试题型中有使用nodejs实现base64和图片文件相互转换的例子,刚好近期要开发这个功能,暂时记录下来,下周开发完成再做一个补充。
1.将base64转换为图片文件,这里举例用的png文件
constfs=require('fs'); constpath='xxx/'+Date.now()+'.png'; constbase64=data.replace(/^data:image\/\w+;base64,/,"");//去掉图片base64码前面部分data:image/png;base64 //newBuffer操作权限太大,v6.0后使用Buffer.from()创建构造函数 constdataBuffer=newBuffer(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类,该类用来创建一个专门存放二进制数据的缓存区。
常用
constbuf=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
constfs=require("fs"); constutil=require("util"); constimageData=awaitutil.promisify(fs.readFileSync(fileUrl));//例:xxx/xx/xx.png constimageBase64=imageData.toString("base64"); constimagePrefix="data:image/png;base64,"; console.log(imagePrefix+imageBase64);
知识点补充:NodeJs将任意文件转换为base64格式
很多图片音频等文件,有时候可能需要读取到数据中或者放到单文件的HTML中时,将它们转换成为base64格式是一个好方法,nodejs可以很方便的把文件转换为base64格式:
需要依赖库“fs”,“path”,“mime-types”,库mime-types可通过npm安装,具体的代码如下:
constfs=require('fs'); constpath=require('path'); constmineType=require('mime-types'); letfilePath=path.resolve('your/file/path'); letdata=fs.readFileSync(filePath); data=newBuffer(data).toString('base64'); letbase64='data:'+mineType.lookup(filePath)+';base64,'+data; fs.writeFileSync(path.resolve('your/save/file/path'),base64);
在你保存的文件中就有该文件的base64格式数据了,实际使用中可以直接使用转换的base64数据,然后可以放到img、audio或者video标签上使用。
总结
到此这篇关于使用Node.js实现base64和png文件相互转换的文章就介绍到这了,更多相关nodejsbase64和png转换内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。