node.js 图片转base64

本文展示了如何使用Node.js将网络上的图片转换为Base64编码。通过http和https模块获取图片数据,利用Buffer.concat()拼接数据片段,并将其转换为Base64字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const http = require('http')
const https = require('https')
const path = require('path')


const url = 'https://www.itlukai.com/ewm12cm.jpg'
const mod = /^https/.test(url) ? https : http


mod.get(url, function (res) {
let chunks = []
let size = 0


res.on('data', function (chunk) {
// 在进行网络请求时,会不断接收到数据(数据不是一次性获取到的),
// node会把接收到的数据片段逐段的保存在缓冲区(Buffer),
// 这些数据片段会形成一个个缓冲对象(即Buffer对象),
// 而Buffer数据的拼接并不能像字符串那样拼接(因为一个中文字符占三个字节),
// 如果一个数据片段携带着一个中文的两个字节,下一个数据片段携带着最后一个字节,
// 直接字符串拼接会导致乱码,为避免乱码,所以将得到缓冲数据推入到chunks数组中,
// 利用下面的node.js内置的Buffer.concat()方法进行拼接
chunks.push(chunk)
size += chunk.length
})


res.on('end', function (err) {
if (err) {
throw new Error(err)
} else {
let data = Buffer.concat(chunks, size)
console.log(Buffer.isBuffer(data))


let base64Pre = 'data:image/'+ path.extname(url).substring(1) +';base64,'
let base64Img = base64Pre + data.toString('base64')
console.log(base64Img)
}
})
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值