js图像转base64

1.使用canvas

将图像绘制到大小同样的canvas上(大小不同转出来的会带有空白部分),然后使用canvas.toDataURL得到base64的字符串

function canvas2Base64(imgSrc) {
  let img = new Image();
  img.crossOrigin = "Anonymous"; // 执行一个跨域请求获取资源,但不可以携带cookie、证书或者 HTTP 基本验证信息
  img.onload = function () {
    const canvas = document.createElement("CANVAS");
    const ctx = canvas.getContext("2d");

    // 等同于img.width height
    canvas.height = this.naturalHeight;
    canvas.width = this.naturalWidth;

    ctx.drawImage(this, 0, 0);
    const dataURL = canvas.toDataURL();
    console.log("canvas:", dataURL);
  };
  img.src = imgSrc;
}
canvas2Base64(imgSrc);

2.使用FileReader

适用于上传图片,然后将图片的base64发送给后端的情况

function fileReader2Base64(el) {
  const file = el.files[0];
  const reader = new FileReader();
  reader.onloadend = function () {
    console.log("FileReader:", reader.result);
  };

  // readAsDataURL 方法会读取指定的 Blob 或 File 对象。读取操作完成的时候,readyState 会变成已完成DONE
  // 并触发 loadend (en-US) 事件,同时 result 属性将包含一个data:URL 格式的字符串(base64 编码)以表示所读取文件的内容。
  reader.readAsDataURL(file);
}
    <input type="file" onchange="fileReader2Base64(this)" />

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值