Sanakey
5 天以前 2af71bcf522c485ea005184c977986374a7dcc4a
提交 | 用户 | age
a161bf 1 /**
V 2  * @description: base64 to blob
3  */
4 export function dataURLtoBlob(base64Buf: string): Blob {
5   const arr = base64Buf.split(',');
6   const typeItem = arr[0];
7   const mime = typeItem.match(/:(.*?);/)![1];
013cb7 8   const bstr = window.atob(arr[1]);
a161bf 9   let n = bstr.length;
V 10   const u8arr = new Uint8Array(n);
11   while (n--) {
12     u8arr[n] = bstr.charCodeAt(n);
13   }
14   return new Blob([u8arr], { type: mime });
15 }
661db0 16
V 17 /**
18  * img url to base64
19  * @param url
20  */
21 export function urlToBase64(url: string, mineType?: string): Promise<string> {
22   return new Promise((resolve, reject) => {
23     let canvas = document.createElement('CANVAS') as Nullable<HTMLCanvasElement>;
24     const ctx = canvas!.getContext('2d');
25
26     const img = new Image();
27     img.crossOrigin = '';
28     img.onload = function () {
29       if (!canvas || !ctx) {
30         return reject();
31       }
32       canvas.height = img.height;
33       canvas.width = img.width;
34       ctx.drawImage(img, 0, 0);
35       const dataURL = canvas.toDataURL(mineType || 'image/png');
36       canvas = null;
37       resolve(dataURL);
38     };
39     img.src = url;
40   });
41 }