vue中canvas生成图片并上传服务器

将canvas转化为图片并上传服务器,有两种思路
思路1  直接将canvas转化为base64编码,将base64编码的字符串上传服务器,让后端转化为图片;
思路2  需要将canvas的内容先转化为base64编码的字符串,再将字符串转化为file上传; 

1 将canvas转化为file


canvas转化为64
canvasToBase64: function(canvas){
    // 'image/png'可以换成'image/jpeg'
    return canvas.toDataURL('image/png');
}

 

canvas转化为图片
canvasToImg: function(canvas){
    let image = new Image();
    image.src = canvas.toDataURL('image/png')
    return image;
}


base64转化为file
base64ToFile: function(urlData, fileName){
    let arr = urlData.split(',');
    let mime = arr[0].match(/:(.*?);/)[1];
    let bytes = atob(arr[1]);
    let n = bytes.length
    let ia = new Uint8Array(n);
    while (n--) {
        ia[n] = bytes.charCodeAt(n);
    }
    return new File([ia], fileName, { type: mime });
}

 

2 vue上传canvas


使用formData上传canvas
submitImg: function(canvas){
    let param= new FormData();
    param.append("file", this.base64ToFile(canvas.toDataURL('image/png'));
    param.append("user_name", 'mason');
    
    // 注意添加headers
    axios.post('/que/admin/final/report/chess/image/add/', param, {headers:{'Content-Type': 'multipart/form-data'}}).then(res=>{
        console.log(res.data);
    });
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值