1 public urlToBlob(url) { 2 const self = this; 3 const image = new Image(); 4 image.crossOrigin = ''; 5 image.src = url; 6 image.onload = function () { 7 // 图片的绝对路径地址 转换成base64编码 如下代码: 8 const canvas = document.createElement('canvas'); 9 canvas.width = image.width;10 canvas.height = image.height;11 const ctx = canvas.getContext('2d');12 ctx.drawImage(image, 0, 0, image.width, image.height);13 // canvas.toBlob((res) => { 14 // console.log(res);15 // self.communityFormData.delete('image');16 // self.communityFormData.append('image', res);17 // console.log(self.communityFormData.get('image'));18 // });19 const ext = image.src.substring(image.src.lastIndexOf('.') + 1).toLowerCase();20 const dataURL = canvas.toDataURL('image/' + ext);21 const type = 'image/' + ext;22 console.log(dataURL);23 const bytes = window.atob(dataURL.split(',')[1]); // 去掉url的头,并转换为byte24 console.log(bytes);25 // 处理异常,将ascii码小于0的转换为大于026 const ab = new ArrayBuffer(bytes.length);27 console.log(ab);28 const ia = new Uint8Array(ab);29 console.log(ia);30 for (let i = 0; i < bytes.length; i++) {31 ia[i] = bytes.charCodeAt(i);32 }33 console.log(ia);34 const tempBlob = new Blob([ia], { type: type });35 self.communityFormData.delete('image');36 self.communityFormData.append('image', tempBlob);37 console.log(tempBlob);38 };39 }
将服务端传过来的图片绝对地址转成 Blob 类型返回给 服务端