JavaScript 将图片转为base64的方法。
求JavaScript 将图片转为base64的方法
JavaScript 将图片转为base64的方法
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Nothing some time 2023-04-18 11:44关注
在 JavaScript 中,可以使用 File API 和Canvas API 将图片转为base64格式的数据。以下是两种常用的方案:
- 使用 FileReader 和 Canvas API
使用
FileReader
读取图片数据,然后使用Canvas
在内存中创建一张尺寸和图像文件一样的画布,并在其中绘制读取的图像文件,最后将画布中的图像数据转为 base64 编码即可。示例代码如下:
function fileToBase64(file) { return new Promise((resolve, reject) => { if (!file) return reject(new Error("文件不存在!")); if (!/image\/\w+/.test(file.type)) { return reject(new Error("文件类型不是图片!")); } const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function() { const img = new Image(); img.src = this.result; img.onload = function() { const canvas = document.createElement('canvas'); canvas.width = img.width; canvas.height = img.height; const ctx = canvas.getContext('2d'); ctx.drawImage(img, 0, 0, img.width, img.height); const dataURL = canvas.toDataURL(file.type); resolve(dataURL); } }; reader.onerror = function() { reject(new Error("文件读取出错!")); }; }); }
调用方式:
const fileInput = document.getElementById('fileInput'); const file = fileInput.files[0]; if(file) { fileToBase64(file).then(dataURL => { console.log(dataURL); // 输出转换后的 base64 编码 }).catch(error => { console.error(error); }); }
- 使用 XMLHttpRequest 和 Blob
使用 XMLHttpRequest 读取图片数据,然后将数据转为 Blob 对象,并使用 FileReader 读取 Blob 数据,在其
onload
回调中将数据转为 base64 编码即可。示例代码如下:
function imageToBase64(imageUrl) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.open('GET', imageUrl, true); xhr.responseType = 'blob'; xhr.onload = function() { if (this.status === 200) { const reader = new FileReader(); reader.readAsDataURL(this.response); reader.onload = function() { resolve(this.result); }; reader.onerror = function() { reject(new Error("读取数据出错!")); }; } else { reject(new Error("请求出错!")); } }; xhr.onerror = function() { reject(new Error("请求出错!")); }; xhr.send(); }); }
调用方式:
const imageUrl = 'https://example.com/image.png'; imageToBase64(imageUrl).then(dataURL => { console.log(dataURL); // 输出转换后的 base64 编码 }).catch(error => { console.error(error); });
以上两种方案都可以将图片转为 base64 编码,具体使用哪种方案,可以根据实际的场景和需求进行选择。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 MATLAB代码补全插值
- ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
- ¥15 前后端分离的学习疑问?
- ¥15 stata实证代码答疑
- ¥50 husky+jaco2实现在gazebo与rviz中联合仿真
- ¥15 dpabi预处理报错:Error using y_ExtractROISignal (line 251)
- ¥15 在虚拟机中配置flume,无法将slave1节点的文件采集到master节点中
- ¥15 husky+kinova jaco2 仿真
- ¥15 zigbee终端设备入网失败
- ¥15 金融监管系统怎么对7+4机构进行监管的