weixin_49531835 2022-01-09 13:03 采纳率: 100%
浏览 32
已结题

如何使用 JavaScript 将图像转换为 Base64 字符串?

前端我需要将我的图像转换为 Base64 字符串然后传送给后端,但是我怎么样才能把图片转换为 Base64 字符串?

  • 写回答

3条回答 默认 最新

  • 几何心凉 2022年度博客之星前端领域TOP 1 2022-01-09 13:29
    关注

    function toDataURL(url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onload = function() {
    var reader = new FileReader();
    reader.onloadend = function() {
    callback(reader.result);
    }
    reader.readAsDataURL(xhr.response);
    };
    xhr.open('GET', url);
    xhr.responseType = 'blob';
    xhr.send();
    }

    toDataURL('https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0', function(dataUrl) {
    console.log('RESULT:', dataUrl)
    })

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • CSDN专家-HGJ 2022-01-09 13:27
    关注

    参考这个博客文章,可以用js转图片为base64。
    https://www.cnblogs.com/xielong/p/9643276.html

    评论
  • 关注
    
    // 重写文件上传方法
        fileUpload(file) {
          this.fileToBase64(file.file)
            .then(res => {
              // console.log(res)
              this.imgSrc = res;
              this.dataForm.extName = res.substring(
                res.indexOf("/") + 1,
                res.indexOf(";")
              );
              const len = 19 + this.dataForm.extName.length;
              this.dataForm.fileBase64 = res.substring(len);
              // console.log(this.dataForm.fileBase64)
            })
            .catch(err => {
              console.log(err);
              this.$message.error(err);
            });
        },
        // 转base64
        fileToBase64(file) {
          return new Promise((resolve, reject) => {
            const reader = new FileReader();
            let fileResult = "";
            if (file.size > 1024 * 1024 * 4) {
              reject("文件大小不能超过4M");
            }
            reader.readAsDataURL(file);
            // 开始转
            reader.onload = () => {
              fileResult = reader.result;
              // data:image/jpeg;base64,
            };
            // 转 失败
            reader.onerror = function(error) {
              reject(error);
            };
            // 转 结束  咱就 resolve 出去
            reader.onloadend = function() {
              resolve(fileResult);
            };
          });
        }
      }
    
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月9日

悬赏问题

  • ¥15 MICE包多重插补后数据集汇总导出
  • ¥15 一道算法分析问题(关于3-MSAT)
  • ¥15 C++ FLUENT 化学反应速率 编写困难
  • ¥15 Python嵌套交叉验证
  • ¥15 linuxkit+elasticsearch
  • ¥15 兄得萌6.13do题😭😭大一小东西的work
  • ¥15 投不到原始数据,gdal投影代码
  • ¥20 卷积混响的代码帮写。。
  • ¥88 借助代码处理雷达影像,识别任意区域洪水前后的被淹没区域,并可视化展示。
  • ¥100 提问关于声学两个频率合成后主观听觉问题