利用nodejs读取图片并将二进制数据转换成base64格式
作者:暮志未晚Webgl 发布时间:2024-05-08 09:37:21
标签:nodejs,读取图片,二进制数据,base64
读取图片并将二进制数据转换成base64格式
首先,使用nodejs进行数据读取,需要用到nodejs的fs模块进行数据读取:
fs.readFile('你的资源路径','binary',function(err,data){
? ? if(err){
? ? ? ? console.log(err)
? ? }else{
? ? ? ? console.log('数据读取成功');
? ? }
});
读取到当前的文件数据以后,我们还需要使用js的Buffer类进行数据转换:
先用buffer将数据进行缓存
const buffer = new Buffer(data, 'binary');
然后获取到图片的base64格式数据:
buffer.toString('base64')
由于获取到的base64不含有前面的图片类型等内容,所以,我们赋值给image对象的时候,还需要添加上相应的图片类型内容:
img.src = 'data: image/'+ getImageType(fileName) +';base64,' + buffer.toString('base64');
//获取当前图片的格式
function getImageType(str){
? ? var reg = /\.(png|jpg|gif|jpeg|webp)$/;
? ? return str.match(reg)[1];
}
最后,附上完整的代码:
fs.readFile('你的资源路径','binary',function(err,data){
? ? if(err){
? ? ? ? console.log(err)
? ? }else{
? ? ? ? const buffer = new Buffer(data, 'binary');
? ? ? ? img.src = 'data: image/'+ getImageType(fileName) +';base64,' + buffer.toString('base64');
? ? }
});
既然有读取,那么,再加上如何将base64格式的图片保存到本地,还是需要用到buffer进行保存:
//保存图片
function saveImg(){
? ? const base64 = canvas.toDataURL().replace(/^data:image\/\w+;base64,/, ""); //必须去掉前缀
? ? const buffer = new Buffer(base64, 'base64');
? ? fs.writeFile('保存路径', buffer, function (err) {
? ? ? ? if(err) throw err;
? ? ? ? console.log('保存成功');
? ? });
}
nodejs读取服务器图片,转为base64显示在网页上
const fs = require("fs");
const mineType = require("mime-types");
function imgToBase64(url) {
try {
let imgurl = config.imageUrl;
let imageData = fs.readFileSync(imgurl);
if (!imageData) return "";
let bufferData = Buffer.from(imageData).toString("base64");
let base64 = "data:" + mineType.lookup(imgurl) + ";base64," + bufferData;
return base64;
} catch (error) {
return "";
}
}
来源:https://blog.csdn.net/qq_30100043/article/details/104653407


猜你喜欢
- 一个更易读的网站意味着网站使用性的改良以及提供愉悦的阅读体验。我们希望浏览者们能或者这些好处不是吗?这篇文章我们将介绍5个简单的方法让你能提
- MySQL修改字段的默认值和空值修改字段默认值修改:ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT
- 有一个ssqdatav2数据,要找到其中的深圳,并且替换成圳。因为收集到的数据出现了错误,本来只有省份简写的地方却出现了深圳。如何找到DF中
- 实现代码/// <summary>/// 去除HTML标记/// </summary&
- 前言用过unittest的童鞋都知道,有两个前置方法,两个后置方法;分别是setup()setupClass()teardown()tear
- 环境管理管理 Python 版本和环境的工具p:非常简单的交互式 python 版本管理工具。官网pyenv:简单的 Python 版本管理
- 安装Python环境ANACONDA是一个Python的发行版本,包含了400多个Python最常用的库,其中就包括了数据分析中需要经常使用
- 下载MySQL-8.0.23点击下载:mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz解压MySQL的安
- re.findall()在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。语法格式:re.find
- 本文实例为大家分享了抖音代码舞python制作代码,供大家参考,具体内容如下一、效果图二、转换代码from img import Image
- 技术选型公司现在需要开发移动端的h5,使用现在比较流行的vue 2.0开发,使用的脚手架是Vant2,网络访问使用的是axios,路由跳转使
- 【基本介绍】【格式】:pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值))【说明】:实现将指定字段的字段值转换为列
- 因为比较简单,我就不说什么了。一看就明白的!1.sql防注入函数Function ChkStr(InString) &
- python的其中一个强大之处就是它可以方便的集成很多的非标准库,今天在GitHub上溜达又发现了一个脏话处理神器,导入better_pro
- 阅读上一篇:打造设计你自己的字体 ⅠMyFonts.com上销售的字体总数已经超过55,000个。现有字体的巨大数量表明了一个事实:我们在设
- 前言在安装MySQL的时候会默认初始化几个MySQL运行所需的数据库:mysql, sys, information_schema, per
- 今天有朋友问我关于用JAVASCRIPT来进行页面各表单之间的数据传递的问题,我以前也写过,不过从来没有注意,今天总结了一下,希望能够给大家
- 图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波。我们知道微分运算是求信号的变化率,具有加强高频分量的作用。在空域运
- 一、数学相关1、绝对值:abs(-1)2、最大最小值:max([1,2,3])、min([1,2,3])3、序列长度:len('ab
- 代码如下:<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001&quo