提交 | 用户 | 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 |
} |